ich in der Regel ein spezielles Objekt erstellen, um meine Core Data-Stack und verwandte Objekte und Verhaltensweisen zu verwalten. Dies ist nützlich, da es eine große Kesseltafel mit Core-Daten gibt, sodass ich eine generische Base-Manager-Klasse erstellen und dann für jede App eine Unterklasse verwenden kann. Ich nenne es normalerweise AppNameDataModel.
Ich lieber den Kontext des verwalteten Objekts im DataModel-Objekt ausblenden. Dadurch werden die anderen Objekte in der App gezwungen, das DataModel-Objekt nach dem Zugriff auf den Core Data-Stack zu fragen, wodurch eine gute Kapselung und Sicherheit erreicht wird.
Normalerweise erstelle ich Methoden in der DataModel-Klasse, um Abrufe für Entitäten zurückzugeben, z.
-(NSFetchRequest *) entityNameFetch;
... und dann eine performFetch
Methode im Datenmodell. Bei der Verwendung fragt ein Controller nach einem Abruf für eine Entität, konfiguriert den Abruf und fordert dann das Datenmodell auf, den Abruf durchzuführen und die Ergebnisse zurückzugeben. Sie können Skripts für die Generierung der Methoden erstellen, die die Felder fetch und perform fetch zurückgeben. Dies spart vor allem beim Prototyping viel Zeit.
Ein Verweis auf DataModel-Instanz selbst kann von Controller zu Controller übergeben werden, aber ich denke, dies ist eine gültige Verwendung des Singleton-Muster, so dass ich oft das DataModel ein Singleton und die Bereitstellung einer Kategorie auf UIViewController für eine Eigenschaft, um darauf zuzugreifen .Das bedeutet, dass jeder View-Controller, den ich dem Projekt hinzufüge, automatisch auf das DataModel zugreifen kann.
Dieses Muster hält alles schön verkapselt und modular. Es erleichtert das Hinzufügen neuer Ansichten oder das Teilen des Datenmodells zwischen Projekten. Es braucht ein wenig Arbeit, um es einzurichten, aber sobald Sie die Basisklasse haben, wird die zukünftige Nutzung massiv beschleunigt.
Dank BoltClock, wusste ich nicht über diese Funktion! –
mögliches Duplikat von [Speicherort für den "Core Data Stack" in einer Cocoa/Cocoa Touch-Anwendung] (http://stackoverflow.com/questions/1267520/where-to-place-the-core-data-stack-in) -a-Kakao-Kakao-Touch-Anwendung) –