unit测试时,coreData部分报错:This NSPersistentStoreCoordinator has no persistent stores.

遇到一个很奇怪的现象。unit测试时,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的随机数。

估计是跑画面的时候有建新目录的权限。

而跑单体的时候既没有建目录权限,也没有删文件权限。所以当存储改变时会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值