Gibt es einen Weg, um NSManagedObjectContext die zimmerreserviereung, ohne das Sie meine AppDelegate jedes mal?
Erstellte ich eine app von einem Xcode-Vorlage und die ausgewählte "Core Data" als option, so dass alle von den Kern-Daten, die Delegierten und die wichtigsten Methoden würden in der AppDelegate-Dateien.
Nun, jedes mal, wenn ich habe, um den Kontext, um die Core-Daten, ich bin mit dem folgenden code:
MovieCatalogAppDelegate *appDelegate = (MovieCatalogAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
Gibt es trotzdem, um die managedObjectContext ohne Anruf direkt an die MovieCatalogAppDelegate? Ich will machen es zu einem generischen Aufruf also meine Dateien sind nicht unbedingt gebunden MovieCatalogAppDelegate.h. Grundsätzlich bin ich versucht zu entkoppeln, den code und die Dinge machen, mehr Dynamik, ohne das Bedürfnis zu wissen, den direkten Namen.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar verschiedene Optionen.
Konnten Sie Ihr Core-Data support-code in einer anderen Klasse als Ihre app-delegate. Machen Sie es ein singleton ist, wenn Sie das möchten.
Könnte passieren in Ihrem managed-object-context-als eine Eigenschaft, die jeder view-controller.
Wenn Sie eine
NSManagedObject
, dass Sie bereits vorbei ist, können Sie dieNSManagedObjectContext
von dermanagedObjectContext
des besagten Objekts.Gibt es einige Ideen in dieser Artikel auf CIMGF.
Die offizielle Antwort (Apple-Dokumentation) ist, dass Sie einen Zeiger auf den managedObjectContext auf jede einzelne der Klassen, die es benutzen werden und geben Sie an andere Objekte verwenden müssen.
Können Sie es als eine Eigenschaft der UIViewControllers (oder jedes andere Objekt) und legen Sie es auf die Schöpfung; in Ihrem code müssen Sie nur rufen:
self.managedObjectContext
Gehen, anstatt den ganzen Weg zu den Delegierten.
Wenn Ihr mehr Infos braucht einfach Kommentar und ich werde über die Antwort.