iPhone Core Data: Initialisierung des verwalteten Objekts ohne Kontext

8

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?

    
WillF 28.09.2009, 16:40
quelle

4 Antworten

5

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.

    
Daniel 28.09.2009 16:46
quelle
2

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.

    
Barry Wark 28.09.2009 17:31
quelle
1

Für jeden, der über diese Frage stolpert, hier ist, wie ich erreicht habe, was das OP wahrscheinlich anstrebte:

%Vor%     
etipton 26.02.2014 10:29
quelle
0

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.

    
Corey Floyd 28.09.2009 17:52
quelle

Tags und Links