Leí mucho sobre Core Data ... pero cuál es una forma eficiente de hacer un recuento sobre un tipo de entidad (como SQL puede hacer con SELECT count (1) ...). ¡Ahora acabo de resolver esta tarea seleccionando todo NSFetchedResultsController
y obteniendo el recuento de NSArray
! Estoy seguro de que esta no es la mejor manera ...
objective-c
core-data
erazorx
fuente
fuente
countForFetchRequest:error:
estados queNSNotFound
se devuelve en caso de error. En general, elNSError
manejo en la convención del cacao es que el valor deerr
no está definido (y a menudo es peligroso) si no se produce ningún error.Para ser claros, no estás contando entidades, sino instancias de una entidad particular. (Para contar literalmente las entidades, solicite al modelo de objeto administrado el recuento de sus entidades).
Para contar todas las instancias de una entidad determinada sin obtener todos los datos, utilice
-countForFetchRequest:
.Por ejemplo:
fuente
Rápido
Es bastante fácil obtener un recuento del número total de instancias de una entidad en Core Data:
Probé esto en el simulador con más de 400,000 recuentos de objetos y el resultado fue bastante rápido (aunque no instantáneo).
fuente
Solo agregaré eso para hacerlo aún más eficiente ... y debido a que es solo un recuento, realmente no necesita ningún valor de propiedad y, ciertamente, como uno de los ejemplos de código anteriores, tampoco necesita subentidades.
Entonces, el código debería ser así:
Espero eso ayude.
fuente
Creo que la forma más fácil y eficiente de contar objetos es establecer el
NSFetchRequest
tipo de resultadoNSCountResultType
y ejecutarlo con elNSManagedObjectContext countForFetchRequest:error:
método.fuente
Escribí un método de utilidad simple para Swift 3 para obtener el recuento de los objetos.
fuente
En Swift 3
fuente
Realmente es solo esto:
"Barco" es solo el nombre de la entidad de la pantalla de su modelo de datos:
¿Qué es lo global
yourContainer
?Para usar datos básicos, en algún momento de su aplicación, solo una vez, simplemente vaya
donde "cosas" es simplemente el nombre del archivo del modelo de datos.
Simplemente tendrías un singleton para esto,
Entonces, desde cualquier lugar de la aplicación
es tu contenedor
Entonces, en la práctica, para obtener el recuento de cualquier entidad, es solo
fuente
Si desea encontrar el recuento para la búsqueda predicada específica, creo que esta es la mejor manera:
fuente