Frage

Ich habe ein Dokument-basierten Core Data-Anwendung, die wie funktioniert. Ich möchte Unterstützung für einen globalen persistenten Speicher hinzufügen, um eine Bibliothek von Elementen zu halten.

Ich habe die meisten der relevanten Dokumente zu lesen und verstehen, dass ich Konfigurationen in den verwalteten Objektmodellen verwenden sollte. Ich habe zwei Konfigurationen definiert: „DocumentConfiguration“ und „LibraryConfiguration“. Die Entitäten im Dokument Konfiguration sind nur im Dokument Konfiguration und die Entitäten in der Bibliothek Konfiguration sind nur in der Bibliothek Konfiguration - d. H, keine Überlappung

Die docs dann sagen: „Du dann dieses Modell verwenden, wenn Sie einen Koordinator erstellen“. Aber ich weiß nicht wirklich meinen eigenen persistenten Speicher Koordinator erstellen, da ich den Standard-NSPersistentDocument Koordinator bin mit.

Ein paar Fragen, wie man am besten vorgehen und helfen, Missverständnisse aufklären Ich habe:

A. Werde ich den NSPersistentStoreCoordinator im NSPersistentDocument erhalten und dann einen neuen persistenten Speicher, um es entlang der Linien von:

NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType 
    configuration:@"LibraryConfiguration" 
    URL:url 
    options:nil 
    error:&error];

Ich denke, dass dies ein Problem sein kann, weil ich nicht die andere Konfigurationsdefinition zur Verfügung gestellt habe ( „DocumentConfiguration“) in dem persistenten Speicher Koordinators NSPersistentDocument als ich die Standard-bin mit von NSPersistentDocument zur Verfügung gestellt. Ich vermute, es würde wahrscheinlich null verwenden, wenn die Zeit, um das Dokument zu speichern kommt. Und wenn ja, wäre dies ein Problem sein? Das heißt, wie würden Sie wissen der Koordinator persistent die Speicher eine Einheit mit einer bestimmten Konfiguration Definition zu speichern, wenn die gleichen Konfigurationen nicht für alle persistent speichert (in diesem Fall zwei) definiert sind? Kann ich die Konfiguration (auf „DocumentConfiguration“) des NSPersistentDocument des persistenten Speicher setzen, bevor es erstellt wurde / gespeichert? Aus der NSPersistentDocument docs:

  

ein neues Dokument Speicher fügt einen Laden des Standardtypen mit der gewählten URL und ruft speichern: auf dem Kontext. Für ein vorhandenes Dokument, eine speichert nur Invokes sparen. Auf dem Kontext

B. Wäre es besser, meine eigene NSPersistentStoreCoordinator und NSManagedObjectContext Instanzen zu erstellen, die Addition der beiden persistent speichert mit Konfigurationen definiert und dann die NSPersistentDocument diese NSPersistentStoreCoordinator und NSManagedObjectContext Instanzen verwenden machen, und befreien die alten? Wenn ja, wie würde ich die URL für die NSPersistentDocument für die addPersistentStoreWithType angeben: ... Methode? Es scheint, diese URL nur einmal das Dokument ohne Titel bekannt ist, wird gespeichert. (Testing diesen gibt, erscheint nicht vorübergehend persistenter Speicher zu sein (über Verfahren persistentStores auf dem persistenten Speicher Koordinator), bis das Dokument zum ersten Mal gespeichert wird).

C. Oder wäre es besser, NSPersistentDocument allein zu lassen, und meine eigene NSPersistentStoreCoordinator Instanz erstellen, dass ich ausschließlich für den anhaltende Bibliothek Speicher verwenden und verwaltete Bibliothek Objektmodell? Die docs sagen, dass mehrere Instanzen von NSPersistentStoreCoordinator sollten in multithreaded Core Data-Anwendungen verwendet werden, aber ich weiß nicht multithreaded Core Data Unterstützung benötigen. Ist es wünschenswert, zwei Fälle von NSPersistentStoreCoordinator zu haben - eine für die Bibliothek und einen für Dokumente (Intuition sagt, dass dies nicht notwendig ist und wahrscheinlich nicht der richtige Ansatz)

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Die Lösung, die ich verwenden, die gut funktioniert basiert auf C) oben. Ich verlasse das NSPersistentDocument und es ist persistenten Speicher Koordinator allein und stattdessen meine eigene NSPersistentStoreCoordinator Instanz erstellen, dass ich ausschließlich für den anhaltenden Bibliothek Speicher verwende (globale Speicher).

kann ich die Konfiguration für den Speicher auf einen benutzerdefinierten Wert für den Fall, stelle ich mit diesem persistenten Speicher Koordinator später mehr Speicher zugeordnet haben will (zum Beispiel „LibraryConfiguration“). Da die Bibliothek Speicher durch einen persistenten Speicher Koordinator unterscheidet sich von der NSPersistentDocument des persistenten Speicher Koordinator verwaltet wird, brauche ich nicht über die Angabe einer Konfiguration für die persistent speichert die NSPersistentDocument betroffen sein.

Andere Tipps

Sie benötigen einen separaten persistenten Speicher für jede Konfiguration zu erstellen. Das ist, was Konfiguration ist, um Sie zu erlauben verschiedene Einheiten in dem gleichen Datenmodell in separate persistente Dateien zu speichern.

Ein häufiger Fehler ist hier zu vergessen, dass ein persistenter Speicher Koordinator eine beliebige Anzahl von persistenten Speichern haben kann. zu schaffen, schaffen zwei persistent speichert mit unterschiedlichen Namen und / oder Standorte und jeweils mit einer anderen Konfigurationsnamen Alles, was Sie tun müssen, ist das Apple-Text duplizieren. Dann fügen Sie sowohl auf den persistenten Speicher Koordinator.

Und du bist fertig. Die Objektinstanzen für jede Konfiguration wird in das richtige Geschäft gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top