每次我为我的应用程序更改 Core Data 模型时,它都会在下次启动时生成一个不可恢复的错误:“用于打开商店的模型与用于创建商店的模型不兼容”。
我发现避免这种情况的唯一可靠方法是手动删除应用程序并让 Xcode 重新安装它,或者使用其他技术手动删除 Core Data 存储 .sqlite 存储文件。这显然不适合运送给用户。
Apple 用于初始化 NSPersistentStoreCoordinator 的默认 App Delegate 模板包括以下注释:
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
/*
TODO: Replace this implementation with code to handle the error appropriately.
...
If you encounter schema incompatibility errors during development, you can reduce their frequency by:
* Simply deleting the existing store:
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil]
* Performing automatic lightweight migration by passing the following dictionary as the options parameter:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
*/
不过,我还没有找到任何关于如何“正确处理错误”的示例或说明。
在这种情况下,我很乐意简单地删除数据库并让应用程序从在线数据中重新生成它。这就是我手动删除数据库时所做的事情。但是我怎样才能自动响应这个错误情况呢?
是否有任何解释最佳实践的好示例?