CoreData es un marco de gestión de gráficos de objeto, no un almacén de datos de SQL. Por lo tanto, debe, lo más rápido posible, salirse de la mentalidad de SQL. NSPredicate
está concebido como un predicado no sorprendente para los objetos calificadores en el gráfico de objetos. Por lo tanto, puede buscar todos los objetos que coinciden con una consulta, pero eso no es lo mismo que agrupar esos resultados. Si desea realizar operaciones agregadas, use la codificación Key-Value collection operators. Bajo el capó, Core Data puede convertir estos a SQL sensible, pero eso es exclusivamente un detalle de implementación.
En este caso, se puede obtener el conjunto de valores únicos packTitle
con
[myCards valueForKeyPath:@"@distinctUnionOfObjects.packTitle"];
que le dará el conjunto distinto de valores packTitle
en la colección myCards
. Si desea esto para todas las tarjetas en los almacenes Core Data, deberá ejecutar una consulta para todos los cards
, luego aplique esta operación de recopilación.
La alternativa es crear una entidad PackInformation
, o alguna que contenga una propiedad title
. A continuación, puede tener solo 3 de estas entidades en el almacén de datos, haciendo referencia a ellas desde las entidades de paquete apropiadas. Es trivial buscar los tres (o lo que sea que sea el número final) y obtener sus títulos.
Como han dicho otros, si lo que intenta hacer es fundamentalmente informar desde un conjunto de datos relacionales, es mejor que vaya directamente con SQLite. Todo depende de la cantidad de otros beneficios que obtenga de Core Data.
Muchas gracias por estos detalles y gracias adicionales por haber prestado atención a mi pregunta. Parece que necesito aprender a codificar los valores clave para entender tu respuesta. También es interesante cómo eliminar todas las tarjetas con packTile llamado PACK1. Espero encontrar una respuesta moviéndose en esta dirección. – Michael
NSPredicar por sí mismo no tiene nada que ver con los datos centrales. Se puede usar con matrices y otras bases de datos como Realm. Es por eso que esta es una pregunta válida y está perfectamente bien para comparar con SQL – brainray