usar que objective español datos data cuando objective-c cocoa macos core-data

objective c - que - Datos principales: entidad abstracta en solicitud de obtención



que es core data (2)

He hecho algo similar, sin embargo, esa entidad no era abstracta. Era una entidad estándar (sin instancias) y las otras entidades que obtuve se derivaron todas de esa entidad. No lo he intentado con una clase abstracta, sin embargo, mirando los documentos parece que podría no ser posible:

Guía de programación de datos básicos

Resumen de entidades Puede especificar que una entidad sea abstracta, es decir, que no creará ninguna instancia de esa entidad. Por lo general, hace una entidad abstracta si tiene un número de entidades que todas representan especializaciones de (heredan de) una entidad común que no debería ser instanciada. Por ejemplo, en una aplicación de dibujo puede tener una entidad gráfica que defina atributos para coordenadas xey, color y límites de dibujo. Nunca, sin embargo, crea una instancia de un Gráfico. Las subentidades concretas de Graphic pueden ser Circle, TextArea y Line.

Mi sugerencia sería establecer las cosas con la entidad animal abstracta y darle una oportunidad. Si no funciona, simplemente haz que la entidad Animal no sea abstracta (las palabras me fallan, ¿así es como lo llamaríamos? Tal vez ''concreto'' es mejor?) Y deberías estar bien. Si alguien ha hecho esto con una clase abstracta, me gustaría escucharlo.

Supongamos que tengo un modelo de Datos centrales con una entidad abstracta llamada "Animal". Entonces, tengo muchas otras entidades que heredan de esta entidad abstracta: "León", "Perro", "Gato", etc. (No estoy desarrollando un programa de zoológico, pero esta analogía funciona bien para el problema que estoy explicando !

Lo que quiero saber es: ¿Puedo buscar "todos los animales" a la vez haciendo esto?

NSFetchRequest *searchRequest = [[NSFetchRequest alloc] init]; [searchRequest setEntity:[NSEntityDescription entityForName:@"Animal" inManagedObjectContext:aContext]]; NSArray *matchedObjects = [aContext executeFetchRequest:searchRequest error:nil];

Entiendo que hay métodos en NSEntityDescription para determinar si una entidad hereda de otra. ¿Pero hay una forma rápida de captar todas las entidades que son de un tipo particular (abstracto) --- en este caso, "Animal"?

Si el enfoque anterior no es válido, ¿cuál es la forma más eficiente de hacerlo? ¡Gracias!


Definitivamente puedes usar ese enfoque.

De la guía de programación de datos básicos de Apple:

La herencia de la entidad funciona de manera similar a la herencia de clase; y es útil por las mismas razones. Si tiene varias entidades que son similares, puede factorizar las propiedades comunes en una superentidad, también conocida como entidad principal. En lugar de especificar las mismas propiedades en varias entidades, puede definirlas en una entidad y las subentidades las heredan. Por ejemplo, puede definir una entidad Person con atributos firstName y lastName, y subentidades Employee y Customer, que heredan esos atributos.