Por lo general crear un objeto dedicado a manejar mi pila de datos básicos y los objetos y comportamientos relacionados. Esto es útil porque hay una gran cantidad de placa de caldera con Core Data, así que puedo crear una clase genérica de administrador de base y luego usar una subclase para cada aplicación. Normalmente lo llamo AppNameDataModel.
Prefiero ocultar el contexto del objeto gestionado dentro del objeto DataModel. Esto fuerza a los otros objetos de la aplicación a solicitar al objeto DataModel el acceso a la pila de datos básicos, lo que proporciona una buena encapsulación y seguridad.
Normalmente, creo métodos en la clase DataModel para devolver capturas para entidades, p.
-(NSFetchRequest *) entityNameFetch;
... y luego tienen un método performFetch
en el DataModel. En uso, un controlador solicita una recuperación para una entidad, configura la recuperación y luego le pide al DataModel que realice la recuperación y devuelva los resultados. Puede guiar la generación de los métodos que devuelven la búsqueda y la recuperación de la ejecución también es la placa de la caldera. Todo esto ahorra mucho tiempo, especialmente al crear prototipos.
Se puede pasar una referencia a la instancia de DataModel del controlador al controlador, pero creo que es un uso válido del patrón singleton, por lo que a menudo el DataModel es un singleton y proporciona una categoría en UIViewController para que una propiedad acceda a él .Eso significa que cualquier controlador de vista que agregue al proyecto automáticamente tiene acceso al modelo de datos.
Este patrón mantiene todo muy bien encapsulado y modular. Hace que sea fácil agregar nuevas vistas o compartir el modelo de datos entre proyectos. Se necesita un poco de trabajo para configurar inicialmente, pero una vez que tienes la clase base, el uso futuro se acelera masivamente.
Gracias BoltClock, ¡No sabía de esta función! –
posible duplicado de [Dónde colocar la "Pila de datos del núcleo" en una aplicación Cocoa/Cocoa Touch] (http://stackoverflow.com/questions/1267520/where-to-place-the-core-data-stack-in -a-cocoa-cocoa-touch-aplicación) –