Core Data: Ist es möglich, benutzerdefinierte Funktion in der Gruppe zu verwenden

8

Ist es möglich, bei der Erstellung von NSFetchRequest in objective-c die benutzerdefinierte Funktion (strftime) gruppenweise zu verwenden? Die SQL-Anweisungen sind in sqlite perfekt gültig:

%Vor%

Nach einem Tag des Ausgrabens und Ausprobierens verschiedener Wege und Lösungen kam ich jedoch zu dem Schluss, dass es unmöglich ist, dies mit Core-Daten in einem einzigen SQL-Abruf zu tun. Ich verwende NSFetchRequest mit setPropertiesToGroupBy (nur iOS 5.0).

AKTUALISIEREN. Es gibt ein Beispiel zum Abrufen solches Verhalten mit Kerndaten von Apple zur Verfügung gestellt. Ich habe jedoch "-com.apple.CoreData.SQLDebug 1" aktiviert, um SQL anzuzeigen, das von Kerndaten ausgeführt wird. Es scheint, Core-Daten führen nicht meine gewünschte SQL. Es wählt nur alle mit einer ersten SQL-Abfrage aus und durchläuft anschließend die Gruppen, die mehrere SQL-Abfragen "SELEC .. WHERE ID IN ...." ausführen. Ein Auszug aus der Konsole:

%Vor%     
Centurion 04.07.2012, 13:29
quelle

1 Antwort

4

Ja, du kannst. Stellen Sie Ihre NSFetchedResultsController ähnlich wie:

zusammen %Vor%

Fügen Sie dann innerhalb Ihrer NSManagedObject-Klasse eine Methode hinzu, die mit sectionNameKeyPath

verwendet werden kann %Vor%

Die Anfrage gibt die Ergebnisse nach Jahr geordnet zurück, so dass jedes Jahr zu einem Abschnitt wird.

Wenn Sie auch eine Gruppierung nach Monat benötigen, sollten Sie die Kalenderkomponenten entsprechend ändern.

Fügen Sie für die Anzahl (*) NSExpression zu Ihrer fetchRequest:

hinzu %Vor%     
Olaf 04.07.2012, 15:01
quelle