CoreData:注释:无法在路径“/var/containers/Bundle/....”中加载优化模型。

3
每次使用Core Data时(所以如果我进行3次调用,我会收到3次警告),调试器中都会出现此错误。

CoreData:注释:无法在路径“/var/containers/Bundle/Application/0B6C2326-D8D5-47B3-8C68-7693C16A0806/liveDemo.app/liveDemo.momd/liveDemo.omo”处加载优化模型

它不会立即引起问题,但是随着累积,它会逐渐减慢应用程序的速度,直到出现NSException崩溃(无论用户在何时操作,它都只会越来越卡顿,然后在应用程序的任何点上崩溃)。
我在3个设备上测试了该应用程序(iPhone 7+ - iOS 11,iPhone 7 - iOS 11,iPad Aid - iOS 10.3),并且仅在iPad上发生。但是,当我开始项目时,其中一个手机安装了iOS 10的版本,并且没有引起任何问题,因此尽管我不能完全排除它,但似乎不太可能是OS版本的问题。 尝试的步骤
  1. 卸载并重新安装应用程序,以便设备清除核心数据文件,还尝试了在应用程序已安装和未安装的情况下重启 - 失败

  2. 在Xcode中删除并重写方案 - 失败

  3. 重新创建datamodel的NSManagedObjectSubclass - 失败

是否有人遇到过最近版本的Xcode类似的问题,并成功解决? 这是一个两年前的类似问题,但没有任何答案有帮助。


{btsdaf} - DJ-Glock
1个回答

4
所以,经过几天的努力,我终于解决了问题。虽然我对Xcode的内部不够熟悉,但我只需要重写CoreData模型即可。在尝试此操作之前最好先备份!
步骤如下:
  1. 截取当前属性的屏幕截图并删除CoreDataModel(.xcdatamodeld文件)
  2. 向项目添加新文件(数据模型模板)
  3. 写入旧属性
  4. 重新编译和构建
我的假设是,该问题是由于将在Xcode 8中开始的项目(使用Swift 3编写)迁移到Xcode 9(升级到Swift 4)后引起的。它在运行iOS 11的设备上没有问题(与Xcode 9的升级级别相同),但发现在旧版本的iOS中会持续引起延迟,并最终导致崩溃。
我不明白为什么简单地修改文件属性不能解决问题,但我很高兴已经解决了它并继续前进。

我的应用在测试阶段运行良好。但是如果它已经在App Store中,并且由于轻量级迁移有更多的模型版本,该怎么办呢?您不能只从Xcode中删除一个版本,而必须删除整个.xcdatamodeld文件。当您删除并替换它时,会存在用户的应用程序崩溃的风险,特别是如果您只重新添加了最后一个版本。或者我们应该重新添加旧版本,并使当前版本成为所选版本? - Gergely Kovacs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接