Je crée généralement un objet dédié à gérer ma pile de données de base et des objets connexes et les comportements. Ceci est utile car il y a beaucoup de plaque de chaudière avec des données de base afin que je puisse créer une classe de gestionnaire de base générique et ensuite utiliser une sous-classe pour chaque application. Je l'appelle habituellement AppNameDataModel.
Je préfère masquer le contexte d'objet géré dans l'objet DataModel. Cela force les autres objets de l'application à demander à l'objet DataModel d'accéder à la pile de données de base, ce qui assure une bonne encapsulation et sécurité.
Habituellement, je crée des méthodes dans la classe DataModel pour retourner des extractions pour des entités, par ex.
-(NSFetchRequest *) entityNameFetch;
... et ont une méthode performFetch
dans le DataModel. En cours d'utilisation, un contrôleur demande une extraction pour une entité, configure l'extraction, puis demande au DataModel d'effectuer l'extraction et de renvoyer les résultats. Vous pouvez écrire la génération des méthodes qui retournent l'extraction et la récupération de la plaque de la chaudière. Tout cela fait gagner beaucoup de temps, surtout lors du prototypage. Une référence à l'instance DataModel elle-même peut être transmise du contrôleur au contrôleur mais je pense que c'est une utilisation valide du pattern singleton donc je fais souvent du DataModel un singleton et je fournis une catégorie sur UIViewController pour qu'une propriété y accède .Cela signifie que tout contrôleur de vue que j'ajoute au projet a automatiquement accès au DataModel.
Ce modèle maintient tout bien encapsulé et modulaire. Cela facilite l'ajout de nouvelles vues ou le partage du modèle de données entre les projets. Il faut un peu de travail à mettre en place au départ, mais une fois que vous avez la classe de base, l'utilisation future est massivement accélérée.
Merci BoltClock, je ne connaissais pas cette fonctionnalité! –
duplicata possible de [Où placer le "Core Data Stack" dans une application Cocoa/Cocoa Touch] (http://stackoverflow.com/questions/1267520/where-to-place-the-core-data-stack-in -a-cacao-cacao-application-tactile) –