最近在修改一个程序BUG的时候遇到一个问题coreData部分报错:This NSPersistentStoreCoordinator has no persistent stores.
但实际跑程序时。增删保存都没问题。
我花了很多的时间在问题抛出的地方在[contextsave:&error];
后来发现,早在初期化_persistentStoreCoordinator 时就报错了
if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl
options:nil
error:&error]) {
// Handle the error.
}
&error 显示的信息为The model used to open the store is incompatible with the one used to create
上网搜了下,大意是说可能在改变entities的atrributes时损坏了存储文件。直接把存储文件删除即可。
我试了下,果然就ok了。
另外两个人和我的现象是一样的,不过在storeUrl指定的地方根本没有文件夹,别说文件了。按照storeUrl
的路径把文件夹建好,也就ok了。
我还有个疑问,为什么实际跑画面的时候是好的。只有单体测试的时候有问题?
我又在跑画面的时候,跟进去看了下。实际跑画面的storeUrl的根路径与单体时不同,有一串看似是UUID的随机数。
估计是跑画面的时候有建新目录的权限。
而跑单体的时候既没有建目录权限,也没有删文件权限。所以当存储改变时会报错。