Migrieren eines Core Data Store von iCloud zu local

9

Ich habe derzeit Probleme mit der Migration von Core Data iCloud.

Ich möchte ein Geschäft von einem iCloud-Ubiquity-Container ( .nosync ) in eine lokale URL verschieben. Das Problem ist, dass wenn ich so etwas rufe:

%Vor%

Ich bekomme diesen Fehler:

%Vor%

Wer hat das jemals gesehen? Vielleicht fehlen mir gerade die richtigen Migrationsoptionen?

    
schmok 05.10.2012, 21:35
quelle

4 Antworten

2

Meine Annahme ist, dass der PSC den Speicher aufgrund der Fehlermeldung nicht ändern kann, indem er die Optionen auf null setzt. Sie müssen wahrscheinlich das Wörterbuch der Optionen für den ursprünglichen Speicher abrufen und diese weiterleiten, anstatt sie auf Null zu setzen.

    
Mike 24.11.2012 21:00
quelle
2

JA, ich habe auch diese Frage.

Ich möchte einen iCloud-Speicher in einen lokalen Speicher umwandeln.

Lösung 1: Verschieben von managedObjects nacheinander in den lokalen Speicher.

Aber wenn Sie eine große Datenbank haben, wird es so langsam sein.

So habe ich gestern eine zweite Lösung gefunden.

Lösung 2: Bearbeiten der Metadaten des iCloud-Stores,

und speichern Sie es an dem neuen Ort.

Nachdem Sie die Schlüssel "com.apple.coredata.ubiquity. *" in den Metadaten entfernt haben, Du bekommst ein komplett lokales Geschäft.

Hier ist mein Code für die Lösung 2:

Es sind bereits einige Eigenschaften eingestellt:

%Vor%

Und die Methode migrate:

%Vor%

Dann können Sie iCloudStoreLocalVersionURL verwenden, um den lokalen Versionsspeicher zu verwenden.

Sie können diesen lokalen Versionsspeicher als lokalen Speicher ohne Fehler verwenden.

Hinweis:

Beachten Sie die NSStoreUUIDKey in den Metadaten,

Sie können es optional für den neuen Speicher ersetzen.

Zu mike:

Das Problem ist:

Wenn wir beim Hinzufügen eines iCloud-Stores die vollständigen iCloud-Optionen verwenden, werden wir alles richtig machen, aber es bleibt ein iCloud-Store. Hier möchten wir einen iCloud-Store in einen lokalen Laden umwandeln.

Wenn wir einige Optionen außer den iCloud-Optionen hinzufügen, erhalten wir einen Fehler und können keine Änderungen in diesem Geschäft speichern.

Also ist Ihre Antwort nicht für dieses Problem.

    
frogcjn 27.12.2012 05:56
quelle
1

Das funktioniert für mich ganz gut. Ich verwende NSPersistentDocument und rufe diese Methode auf, wenn der Benutzer die Menüoption Speichern unter auswählt. Es ist auch erwähnenswert, dass ich meine eigenen Metadaten auf die Datei gesetzt habe, um zu wissen, ob sie über iCloud synchronisiert wird oder nicht. Das müssen Sie wissen, um die richtigen Optionen beim Einrichten des Pacs vor dem eigentlichen Öffnen des Shops selbst zu übergeben. Ich glaube nicht, dass es dafür API gibt.

%Vor%     
Duncan Groenewald 06.11.2013 00:07
quelle
0

Ab iOS 7 gibt es eine wesentlich einfachere und logischere Möglichkeit, Speicher zu migrieren, während iCloud ubiquity gelöscht wird. Übergeben Sie einfach die Option NSPersistentStoreRemoveUbiquitousMetadataOption :

%Vor%

Dies wird den Speicher auf die lokale URL migrieren und alle iCloud-Metadaten löschen, im Wesentlichen was @frogcjn manuell getan hat.

    
Smeedge 05.01.2016 20:40
quelle