CoreData kann zwar für Relationen per Punktoperator (MyManagedObjectPointer.relationshipName) ein NSOrderedSet liefern, falls für die Relation die Checkmark "orderet" im CoreData-Editor gesetzt wurde. Jedoch ist die Reihenfolge der Elemente im Ordered-Set entsprechend der Reihenfolge in welcher die Objekte hinzugefügt wurden. Auch ohne "ordered" Haken kann jedoch mittels NSComparisonResult mit wenig Aufwand ein sortiertes Array geliefert werden.

NSComparisonResult

Hier ein kleiner Code-Schnipsel aus einem meiner Projekte. Hier möchte ich für eine TableView Objekte nach absteigender ID sortiert abholen:

NSArray *tbl_sourceArray = [self.detailItem.hasTankEvents sortedArrayUsingComparator:^NSComparisonResult(TankEvent obj1, TankEvent obj2){

        if (obj1.eventID > obj2.eventID) {
            return (NSComparisonResult)NSOrderedAscending;
        }
        if (obj1.eventID < obj2.eventID) {
            return (NSComparisonResult)NSOrderedDescending;
        }
        return (NSComparisonResult)NSOrderedSame;
    }];

Mehr wird an sich gar nicht benötigt.

Previous Post Next Post