【问题标题】:CoreData: annotation: Failed to load optimized model at path '/var/containers/Bundle/ .... 'CoreData:注释:无法在路径'/var/containers/Bundle/ ....'加载优化模型
【发布时间】:2018-04-04 02:35:39
【问题描述】:

每次使用核心数据时,我都会在调试器中收到此错误(因此,如果我进行 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 版本,它没有引起任何问题,所以虽然我不能完全排除它,但似乎不太可能是操作系统版本的问题。

尝试的步骤

  1. 卸载并安装应用程序,因此设备会清除核心数据文件,还尝试在安装和未安装应用程序的情况下重新启动 - FAILED

  2. 在 Xcode 中移除并重写 Scheme - FAILED

  3. 重新创建数据模型的 NSManagedObjectSubclass - FAILED

有没有人遇到过与最新版本的 Xcode 类似的问题并设法修复它? This is a 2 year old similar problem,但没有一个答案有帮助。

【问题讨论】:

标签: ios swift xcode core-data


【解决方案1】:

所以,几天后我设法解决了它。我对 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 文件。当您删除和替换它时,您可能会冒着用户应用程序崩溃的风险,特别是如果您只重新添加最后一个版本。还是我们也应该重新添加旧版本,并选择当前版本?
猜你喜欢
  • 2019-11-16
  • 1970-01-01
  • 2015-12-19
  • 2018-02-28
  • 1970-01-01
  • 2018-04-03
  • 2019-03-01
  • 1970-01-01
相关资源
最近更新 更多