Ich habe viel über Core Data gelesen. Aber was ist ein effizienter Weg, um über einen Entitätstyp zu zählen (wie SQL es mit SELECT count (1) tun kann ...). Jetzt habe ich diese Aufgabe gelöst, indem ich alle mit ausgewählt NSFetchedResultsController
und die Anzahl der NSArray
! Ich bin sicher, das ist nicht der beste Weg ...
objective-c
core-data
Erazorx
quelle
quelle
countForFetchRequest:error:
Zustände, dieNSNotFound
im Fehlerfall zurückgegeben werden. Im Allgemeinen besteht dieNSError
Behandlung in der Kakaokonvention darin, dass der Wert vonerr
undefiniert (und häufig gefährlich) ist, wenn kein Fehler auftritt.Um klar zu sein, zählen Sie keine Entitäten, sondern Instanzen einer bestimmten Entität. (Um die Entitäten buchstäblich zu zählen, fragen Sie das verwaltete Objektmodell nach der Anzahl seiner Entitäten.)
Um alle Instanzen einer bestimmten Entität zu zählen, ohne alle Daten abzurufen, muss die Verwendung erfolgen
-countForFetchRequest:
.Beispielsweise:
quelle
Schnell
Es ist ziemlich einfach, die Gesamtzahl der Instanzen einer Entität in Core Data zu ermitteln:
Ich habe dies im Simulator mit einer Objektanzahl von über 400.000 getestet und das Ergebnis war ziemlich schnell (wenn auch nicht sofort).
quelle
Ich füge das nur hinzu, um es noch effizienter zu machen ... und weil es nur eine Zählung ist, brauchen Sie keinen Eigenschaftswert und wie in einem der obigen Codebeispiele brauchen Sie auch keine Unterentitäten.
Der Code sollte also so aussehen:
Ich hoffe es hilft.
quelle
Ich glaube, der einfachste und effizienteste Weg, Objekte zu zählen, besteht darin, den
NSFetchRequest
Ergebnistyp auf zu setzenNSCountResultType
und ihn mit derNSManagedObjectContext countForFetchRequest:error:
Methode auszuführen .quelle
Ich habe eine einfache Dienstprogrammmethode für Swift 3 geschrieben, um die Anzahl der Objekte abzurufen.
quelle
In Swift 3
quelle
Es ist wirklich nur das:
"Boot" ist nur der Name der Entität auf Ihrem Datenmodellbildschirm:
Was ist das Globale
yourContainer
?Um Kerndaten zu verwenden, müssen Sie zu einem bestimmten Zeitpunkt in Ihrer App nur einmal loslegen
Dabei ist "stuff" einfach der Name der Datenmodelldatei.
Sie hätten einfach einen Singleton dafür,
Also von überall in der App
ist dein Container,
In der Praxis ist es also einfach, die Anzahl der Entitäten zu ermitteln
quelle
Wenn Sie die Anzahl für einen bestimmten prädizierten Abruf ermitteln möchten, ist dies meiner Meinung nach der beste Weg:
quelle