Schreiben Sie natives SQL in Core Data

Ich muss eine native SQL-Abfrage schreiben, während ich Core Data in meinem Projekt verwende. Ich muss das wirklich tun, da ich benutzeNSPredicate im Moment und es ist nicht effizient genug (in nur einem Fall). Ich muss nur ein paar Unterabfragen und Verknüpfungen schreiben, um eine große Anzahl von Zeilen abzurufen und sie nach einem bestimmten Feld zu sortieren. Insbesondere muss ich es nach der Summe der Werte ihrer untergeordneten Entitäten sortieren. Im Moment rufe ich alles mit NSPredicate ab und sortiere dann mein Ergebnis (Array) manuell, aber das dauert einfach zu lange, da es viele tausend Ergebnisse gibt.

Bitte korrigieren Sie mich, wenn ich falsch liege, aber ich bin mir ziemlich sicher, dass dies keine große Herausforderung sein kann, da es eine Möglichkeit gibt, SQLite in iOS-Anwendungen zu verwenden.

Es wäre großartig, wenn mich jemand in die richtige Richtung führen könnte. Danke im Voraus.

BEARBEITEN: Lassen Sie mich erklären, was ich tue. Hier ist mein Coredata-Modell:

Und so sieht mein Ergebnis auf dem iPad aus:

Ich zeige eine Tabelle mit einer Zeile pro Kunde, in der jeder Kunde eine Umsatzmenge hat, die er von Januar bis Juni 2012 (Last) UND 2013 (Curr) erzielt hat. Neben demCurr Es gibt die Varianz zwischen diesen beiden Werten. Gleiches gilt für Bruttomarge und Deckungsgrad.

Jeder Kunde wird im gespeichertKunde Tisch und jederKunde hat ein paarPbsRows.PbsRow hält tatsächlich die Summe der Verkaufsmengen pro Monat.

Also, was ich tue, um diese Ergebnisse zu zeigen, ist, alle zu holenPbsRows zwischen Januar und Juni 2013 und dann machen Sie dies:

self.kunden = [NSMutableOrderedSet orderedSetWithArray:[pbsRows valueForKeyPath:@"kunde"]];

Jetzt habe ich alle Kunden, die zwischen Januar und Juni 2013 Aufzeichnungen haben. Dann verwende ich eine for-Schleife, um die Summe für jeden einzelnen Kunden zu berechnen.

Die Idee ist, die Verkaufszahlen des laufenden Jahres zu ermitteln und mit denen des letzten Jahres zu vergleichen. Das Schlimme ist, dass es viele Kunden gibt und diefor-loop dauert nur sehr lange :-(

Antworten auf die Frage(3)

Ihre Antwort auf die Frage