2013-05-10 4 views
6

Ich verwende CoreData in meiner App mit einem persistenten Speicher vom Typ NSInMemoryStoreType.Ist es erforderlich, NSManagedObjectContext zu speichern: für In-Memory-Stores?

Ist es jemals notwendig, NSManagedObjectContext save: mit dieser Art von Geschäft anrufen? Führt die Übergabe save: an NSManagedObjectContext eigentlich irgendetwas für In-Memory-Stores?

Apple's documentation einfach erklärt:

speichern:
Versuche, registrierten Objekte in ihre persistenten Speicher gespeicherte Änderungen zu begehen.

Was bedeutet das eigentlich im Zusammenhang mit einem In-Memory-Speicher?

+1

+1, Sehr nette Frage. Ich habe den Kontext immer daran gehindert zu glauben, dass alle Objekte, die im Kontext erstellt wurden, in den persistenten Speicher verschoben werden und den Speicherbedarf reduzieren würden. – Anupdas

Antwort

3

Ich konnte keine Dokumentation finden, aber ich bin sicher, dass es noch benötigt wird.

Core Data hat ein In-Memory-Frontend (repräsentiert durch einen verwalteten Objektkontext) und ein persistentes Backend ("Speicher"). Das persistente Backend ist normalerweise eine Datei, aber es kann sich nur innerhalb des Speichers für NSInMemoryStoreType befinden.

Damit alle Core Data Funktionen funktionieren, müssen die beiden Teile getrennt werden und Sie müssen vom Frontend (ausstehende Änderungen) über die Operation save zum Backend (persistente Daten) wechseln.

Hinweis: Es können mehrere Kontexte für verwaltete Objekte (Frontends) für denselben Speicher (Back-End) vorhanden sein, von denen jede unterschiedliche ausstehende Änderungen aufweist. Beachten Sie, dass für jeden verwalteten Objektkontext Methoden wie hasChanges und NSUndoManager vorhanden sind. Es funktioniert immer noch mit einem speicherinternen Speicher.

Einige Informationen auch here

1

save: führt eine Validierung von Attributen und Beziehungsbedingungen durch.

Verwandte Themen