Ich habe jetzt herausgefunden, dass dies ganz einfach ist - sobald Sie wissen, wo Sie suchen müssen.
In meinem AppDelegate habe ich den NSPersistentStoreCoordinator eingerichtet - und Sie müssen einige Optionen hinzufügen, damit er die automatische Migration übernimmt:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
Dann müssen Sie einen kleinen Trick in xCode machen:
- Wählen Sie Ihre xcdatamodel-Datei aus
- Wählen Sie oben das Design-Menü - dann Datenmodell - und dann Modellversion hinzufügen
- Ihre xcdatamodel-Datei wird dann in ein neues Verzeichnis mit demselben Namen wie Ihre xcdatamodel-Datei verschoben, jedoch mit der Erweiterung xcdatamodeld. In diesem Verzeichnis befindet sich eine zweite Datei mit einer 2 im Namen. Wählen Sie die neue Datei und dann Design-> Datenmodell-> Aktuelle Version festlegen ( in Xcode 4 tun Sie dies )
- Wenn Sie bereits die Änderungen vorgenommen haben, die dazu geführt haben, dass Ihr Projekt nicht kompatibel ist, nehmen Sie diese Änderungen aus der ursprünglichen xcdatamodel-Datei. Wenn Sie die Änderungen noch nicht vorgenommen haben, bearbeiten Sie einfach die Datei 2.xcdatamodel (die Sie gerade in der aktuellen Version erstellt haben).
- Wenn Sie diese Version auf einem Gerät mit dem alten Modell installieren, wird dieses Modell automatisch auf das neue Modell aktualisiert.
Dies scheint großartig und so einfach zu sein, wie ich es wollte - aber ich denke, Sie müssen bei der Entwicklung vorsichtig sein, wenn Sie ein Modell ändern - andernfalls müssen Sie für jede Änderung eine neue Version erstellen.
Ich denke, ich werde alle geänderten Dateien behalten und dann, sobald ich bereit bin, mein Update bereitzustellen, alle dazwischen liegenden Dateien löschen und nur mit den ältesten und neuesten Modellen bereitstellen.
UPDATE (15.07.2011):
Vielen Dank an @ rockstarberlin für den Hinweis, dass es bei Apple eine aktualisierte Dokumentation gibt:
Xcode 4: Festlegen der aktuellen Version eines verwalteten Objektmodells
Update: 19.08.2013 besserer Link:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html