我正在处理我的应用程序,从1.0版本开始,我在核心数据中向实体添加了新属性。所以我添加了新的模型版本,我将storeURL设置为Model 6.sqlite
(在Model 5.sqlite之前),而不是编辑persistentStoreCoordinator
。但是,当我运行应用程序时崩溃和日志显示错误。当我删除应用程序,然后再次安装它工作正常。哪个问题我的app工作比hasPerformedFirstLaunch是错误的初始核心数据,但我不想丢失每个新模型版本的数据。
由于未捕获的异常'NSRangeException'而终止应用程序,原因: ' * - [__ NSArrayI objectAtIndex:]:索引0超出范围为空 阵'
NSDictionary *migrateOptions = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
答案 0 :(得分:1)
我可能在这里遗漏了一些东西,但需要有一个新的Model 6.sqlite文件。您不需要仅仅因为添加新的模型版本而拥有新的持久性存储文件。这就是迁移的作用,使现有的持久性存储与新的模型版本兼容。