我创建了一个由10个实体组成的数据模型。几天后,我在其中一个实体中添加了一个属性。在我运行应用程序时,应用程序崩溃了。所以,请帮我解决这个问题。 提前致谢。
答案 0 :(得分:3)
更改模型后,您必须在设备/模拟器上删除您的应用程序并重新安装。那是因为您现有的SQLite-DB不再适合现在更改的模型。
答案 1 :(得分:1)
如果你还在开发应用程序,最简单的答案就是删除并重新安装它。
如果您确实想要保留数据库的内容,Core Data可以自动从一个版本的架构迁移到另一个版本(有一些警告)。 See the documentation了解详情。
答案 2 :(得分:0)
如果您不希望应用程序崩溃 - 每次需要将属性添加到实体或实体到模型时 - 您必须创建新的模型版本并显示托管对象模型以使用该新版本。
您可以转到:Editor -> Add Model version...
创建新的模型版本。然后在您的应用代理的persistentStoreCoordinator
方法中启用自动迁移:
NSError *error = nil;
NSURL *storeURL = <#The URL of a persistent store#>;
NSPersistentStoreCoordinator *psc = <#The coordinator#>;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
BOOL success = [psc addPersistentStoreWithType:<#Store type#>
configuration:<#Configuration or nil#> URL:storeURL
options:options error:&error];
if (!success) {
// Handle the error.
}
答案 3 :(得分:-1)
你必须让应用程序清理所有目标,然后构建并从模拟器中删除应用程序,然后构建应用程序