Gibt es eine Möglichkeit, ein verwaltetes Objekt außerhalb eines Kontexts zu initialisieren? Ich versuche im Grunde, ein verwaltetes Objekt zuerst außerhalb eines Kontexts zuzuweisen, dann herauszufinden, ob ich das Objekt wirklich einfügen möchte, und es dann unter Verwendung eines vorhandenen verwalteten Objektkontexts in den Datenspeicher zu injizieren.
Ist das möglich oder verstößt es gegen die beabsichtigte Verwendung von Core Data?
Verwaltete Objekte werden vom Kontext "verwaltet", daher können Sie sie nicht wirklich mit alloc zusammenstellen, da sie nicht dazu gedacht sind. Die Instanziierung eines verwalteten Objekts durch den Kontext wird jedoch nicht fortgesetzt, bis Sie die Speichermethode für den Kontext aufrufen , so würden Sie den gleichen Effekt haben, indem Sie den Kontext verwenden, um ihn zu installieren und nur zu speichern, nachdem Sie herausgefunden haben, dass Sie das Objekt wirklich verwenden möchten.
Nein, du kannst keine NSManagedObject
instsance außerhalb von NSManagedObjectContext
instanziieren (naja, das kannst du, aber schlimme Dinge werden passieren und dein Programm wird mit ziemlicher Sicherheit nicht so funktionieren, wie du es dir erhofft hast). Sie können jedoch eine NSInMemoryPersistentStore
-backed NSManagedObjectContext
erstellen. Es ist etwas mehr Setup (nicht viel) und alles verschwindet, wenn Sie den In-Memory-Speicher freigeben. In der Zwischenzeit erhalten Sie alle Vorteile der Object Graph Management von Core Data.
Was Sie wahrscheinlich drehen, ist mehrere Kontexte. Sie können einen zusätzlichen "Notizblock" -Kontext erstellen und dann alle Änderungen wieder in den Hauptkontext einfügen. Eines der iPhone-Beispielprojekte von Apple führt genau das aus. Sie müssen sich im Dev-Center anmelden, um es zu finden.