Estoy construyendo un Core Data NSFetchRequest en el objetivo c. En el modelo de datos hay una entidad principal abstracta (que contiene 4 atributos básicos) y muchas entidades secundarias diferentes que incluyen atributos que no están en el elemento primario. Algunos niños contienen atributos que comparten el mismo nombre y tipos de datos.Un predicado de datos básicos para verificar si las entidades secundarias contienen un atributo o "keypath"?
Estoy aplicando fetchRequest a la entidad padre, de modo que busque todas las instancias de las entidades hijo para ver si existe una "ruta clave".
¿Puedo construir un predicado que solo devuelva entidades secundarias que contengan un atributo en particular?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN self.entityAttributes",attribute.name];
Aquí, atributo es una instancia de NSAttributeDescription, y el objetivo es la búsqueda de otras entidades que tienen un atributo de un nombre coincidente dentro de su lista de atributos, pero no estoy seguro de cómo formatear el predicado.
Puedo aclarar más si es necesario. ¡Gracias!
Necesito consultar las instancias porque el objetivo final es obtener los valores distintivos del atributo de todas las instancias que lo han definido. Estoy usando un bucle similar al que enumeraste aquí para generar de forma procesal la tabla de índice para la solución que Wienke sugirió. –
En realidad, creo que deberías ir con la sugerencia de edsko. Cuando la condición 'si' en su código es verdadera, usted tiene la descripción de la entidad que recogerá todas las instancias que tienen la propiedad que desea.Simplemente ejecuta una búsqueda en la descripción de esa entidad, sin un predicado, y allí está. La belleza de esto es que si solo necesita instancias con valores particulares para esa propiedad, puede agregar un predicado para la búsqueda. (Gracias a los dos: no sabía que pudieras obtener tanta información directamente de la mamá.) – Wienke
Si lo que buscas es rendimiento, entonces tal vez deberías reconsiderar un poco tu modelo de base de datos. Core Data almacenará diferentes entidades en diferentes tablas de la base de datos, por lo que incluso si surge una consulta complicada que funciona en todas las entidades, probablemente no funcionará muy bien. Tal vez sea mejor que agregue la propiedad a la entidad padre en su lugar y simplemente no la use en subentidades que no la necesitan. – edsko