Pregunta

Recientemente comencé el camino de la programación en Objective-C, y ahora estoy analizando Core Data. Sin embargo, estoy confundido sobre qué define exactamente el modelo en Core Data.

Esto es lo que quiero decir: Digamos que creo una entidad con algún conjunto de atributos usando el generador de modelos gráficos. Entonces tengo Xcode generar código para la clase correspondiente. A continuación, quiero crear una propiedad en la clase que se utilizará solo durante el tiempo de ejecución y que Core Data no necesita almacenar ni recuperar. Entonces, agrego una variable y una propiedad correspondiente a la clase (sintetizándola en la implementación)

La nueva propiedad no está definida en el generador de modelos, pero está definida en la clase derivada de NSManagedObject. ¿Cómo se trata en Core Data? ¿Las propiedades enumeradas en la clase definen atributos en el " modelo " ¿O solo los atributos definidos en el generador de modelos definen el modelo?

Del mismo modo, quería agregar una propiedad basada en enumeración al archivo de clase que, cuando obtiene o establece, accede o cambia un atributo NSNumber en el modelo. ¿Puedo hacer eso sin que Core Data trate la propiedad como un atributo para ser almacenado y recuperado?

¡GRACIAS!

¿Fue útil?

Solución

Puede agregar propiedades personalizadas (y variables) al código generado para sus NSManagedObjects, como lo haría con cualquier otra clase. Estos no se convertirán en parte del modelo, sino que serán temporales en la memoria. Vale la pena señalar que si el objeto administrado fuera desasignado, el valor en la memoria también lo haría.

Un consejo que sugeriría si solo está implementando accesores personalizados a los datos subyacentes es crear una categoría en el objeto administrado en cuestión. En los accesores, accede al NSNumber subyacente y lo convierte en su enumeración, definida en el encabezado de la categoría.

Si necesita regenerar el código para el objeto administrado, porque digamos que el modelo cambia, puede simplemente eliminar la clase generada para el objeto administrado y regenerarlo sin necesidad de fusionarse con ningún código personalizado que haya agregado. La categoría que ha agregado funcionará igual siempre que la propiedad de almacenamiento subyacente permanezca igual.

Puede obtener más información sobre las categorías en Guía del lenguaje de programación Objective-C en el ADC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top