Ich habe Core Data-Anwendung und ich migrierte (Upgrade) das Kerndatenmodell. Jedes Mal, wenn ich eine neue Version erstelle, erstelle ich für jede Version ein Mapping-Modell. Im Moment habe ich 16 Versionen und ich habe Mapping-Modelle, die so gehen: 1to2.xcmappingmodel 2to3.xcmappingmodel 3to4.xcmappingmodel ... etc. bis 16Durch verschiedene Versionen in Kerndaten migrieren
Das funktioniert gut, aber ein Problem entsteht, wenn ein Benutzer eine Datendatei mit Version 10 hat und die Anwendung mit Version 16 aktualisiert. Einige, wie ich dachte, Core-Daten wird automatisch von 10 auf 16 aktualisiert Es erscheint ein Fehler mit der Meldung "Missing Mapping Model". Um sicherzustellen, dass die Mapping-Modelle korrekt sind, aktualisiere ich sie einzeln auf jede Version (10 bis 11, 11 bis 12 usw.) und es hat funktioniert ... Hier ist mein Code.
ich geben Sie die Modellversion mit diesem Code:
NSBundle *modelWrapper = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"TaskApp_DataModel" ofType:@"momd"]];
NSString *modelPath = [modelWrapper pathForResource:@"TaskApp_DataModel 16" ofType:@"mom"];
NSLog(@"%@",modelPath);
managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];
Und ich definieren die Migrate Option Automatisch hier:
NSURL *url = [NSURL fileURLWithPath: [applicationSupportDirectory stringByAppendingPathComponent: @"storedata-sql"]];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:url
options:dict
error:&error]){
Wer weiß, wie dies zu aktualisieren? Danke.
Ja danke ... Ich finde es nur in Marcus Zarra Core Data Buch ... schrieb er eine große Prozedur von jedem Modell zum nächsten zu migrieren, ohne zusätzlichen schreiben Mapping-Modelle. Gehen Sie auf NSINfersMappingModel zu überprüfen Danke! –
InfersMappingModel hat funktioniert !!! Vielen Dank! –
versuchen Sie, Datenmigrationen auf ein Minimum zu beschränken (dh Hauptversionen), da der Overhead sehr schnell baloons (Mapping Modelle von jeder Version auf die aktuelle für jede Änderung). Beachten Sie auch, dass die automatische Migration von einer Version zur nächsten funktionieren kann , aber Ihr Modell kann genug ändern, dass von Version 16 zu 21 so unterschiedlich ist, dass es den Unterschied nicht berechnen kann. Schön, dass du es sortiert hast! – MCannon