【问题标题】:How to squash core data migrations?如何压缩核心数据迁移?
【发布时间】:2020-12-18 23:31:29
【问题描述】:

我有一个应用程序,我使用 Xcode 在 Mac 命令行程序中为其生成种子核心数据数据库。在 beta 测试期间,我使用了几个模型版本。现在,对于应用程序的第一个版本,我想将版本压缩到一个具有版本 1 的模型中。这可能吗?

我从 xcdatamodeld 文件夹中删除了旧模型版本,并将当前版本设置为初始版本。我从 pbxproj 文件中删除了对旧模型版本的两个引用。无论我尝试什么,我都会收到“持久存储迁移失败,缺少映射模型。”-错误。我尝试了here 列出的所有内容,即:

  • 清理项目,退出 Xcode
  • 从文档文件夹中删除生成的数据库
  • 删除二进制文件
  • 删除所有派生数据
  • 运行rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
  • ~/Library/Caches/com.apple.dt.Xcode删除缓存

没有任何帮助。我想知道 Xcode 从哪里可以知道旧模型...为了澄清,这是指我在 mac 上作为命令行应用程序运行的数据库创建工具,而不是 iOS 应用程序本身。

非常感谢其他压缩数据库的方法。我正在考虑的一种替代方法是重命名数据库并从现在开始忽略旧数据库。

【问题讨论】:

    标签: ios xcode core-data core-data-migration


    【解决方案1】:

    由于我无法弄清楚 XCode 是如何了解旧模型的,因此我使用不同的名称再次创建模型并在代码中调整 url。这没有问题。

    编辑:我终于弄明白了——我的自建命令行应用程序已正确安装,因此在 ~/Library/Application Support/<name of your app>/ 下有自己的目录,它的三个 *.sqlite 文件所在的位置。删除它们终于摆脱了“缺少映射模型”的错误。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 2011-11-04
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多