错误描述
使用Core Data时碰到以下错误:
falied to create persistentStoreCoordinator The operation couldn’t be completed. (Cocoa error 134100.)
具体描述为:
reason = "The model used to open the store is incompatible with the one used to create the store"
产生原因
在数据库生成好之后,修改了其中一个属性的Optional选项。
修改该选项后,数据库发生改变,需要迁移。
解决办法
创建存储器NSPersistentStoreCoordinator时,开启两个选项:
- NSMigratePersistentStoresAutomaticallyOption
- NSInferMappingModelAutomaticallyOption
代码如下:
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @(YES),
NSInferMappingModelAutomaticallyOption: @(YES)};
// 为 persistentStoreCoordinator 指定本地存储的类型,这里指定的是 SQLite
[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:sqliteURL
options:options
error:&error];
这样就解决了。
可能引发此错误的操作:
- 修改属性
- 修改实体
- 修改关联
- 修改属性的optional选项
如果改动较大,还需要重新创建model才能解决问题。
详见:https://stackoverflow.com/questions/8881453/the-model-used-to-open-the-store-is-incompatible-with-the-one-used-to-create-the