我正在尝试将当前的核心数据结构迁移到新的数据结构,但无论我做什么,我都会不断得到同样的错误:
Terminating app due to uncaught exception 'Open Failed', reason: 'Reason: The operation couldn’t be completed. (Cocoa error 134100.)'
根据文档,这意味着:NSPersistentStoreIncompatibleVersionHashError
我不能从模拟器中删除应用程序,因为它已经发布到应用程序商店。
app委托中的持久性商店协调员如下:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"DATABASELOC.sqlite"];
NSLog(@"URL: %@", storeURL);
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator;
}
我在app委托中的managedobjectmodel如下:
- (NSManagedObjectModel *)managedObjectModel
{
if (managedObjectModel != nil) {
return managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"DATABASELOC" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
我已经生成了第二个模型版本,并更新了当前版本,如果我选择当前版本,如果它与原始模型相同,则加载正常。但是,只要我稍作修改,当前出现相同错误的模型就会出现。
我想它似乎没有意识到有一个新的模型,但无论我做什么我都无法通过这个错误。
还有其他人有这个问题吗?有人可以提供一些建议吗?
如果您需要更多信息,请与我们联系。
提前感谢您的帮助!