【问题标题】:Fix Core Data Fail修复核心数据失败
【发布时间】:2013-12-02 14:56:50
【问题描述】:

我在应用商店中有一个使用 Core Data 的应用,我必须在明天之前发布更新。但是,我在使用 Core Data 时遇到了一些问题。我错误地在 Core Data 中更改了我的模型,现在我的应用程序崩溃了。我尝试迁移数据,但当我在 iPhone 上更新它时,应用程序仍然崩溃。有办法解决吗?

非常感谢您的帮助!

编辑:我正在尝试将 .mom 文件添加到应用程序中,但无法将其放入 Bundle:

编辑 2:我要完全删除 Planner.xcdatamodeld:

【问题讨论】:

  • 只是恢复 git 中的更改并取回您的模型?或者,等等,你不使用版本控制?
  • 时光机是我的后备……如果你能做到,你就得救了

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


【解决方案1】:

您可以从生产应用程序的捆绑包中恢复原始 Core Data 模型。

使用 Finder 打开应用程序包(显示包内容)并查找 .mom 文件或 .momd 目录。

将文件或目录复制到包外的某个位置。

使用 Core Data 创建一个新的 XCode 项目。

在 XCode 中选择新创建的项目 Core Data 模型。

转到 XCode Editor -> Import 菜单并选择您刚刚复制的 .mom 文件,如果需要在 .momd 目录中找到正确的版本。

您现在应该在 XCode 中拥有模型,保存模型文件并将其复制到您的原始项目...

在 XCode 中,从您的项目中删除不正确的模型(请记住先保存一份副本,以便获得新更改的副本)

使用 XCode Add File to... 菜单将旧模型添加到原始项目中

现在编译并运行应用程序以确认它可以正确打开旧文件

现在添加一个新模型版本并将更改添加到这个新版本 - 确保在进行更改之前在 XCode 中选择新模型版本

【讨论】:

  • 是的,从项目中删除旧的不正确模型,但选择“删除参考”选项,这样文件本身不会被删除,它只是从项目中删除,因此您可以稍后再添加。
  • 感谢 XCode 怎么知道使用“Plannerfix.xcdatamodeld”
  • 可能也是一个好主意,将它(旧的)重命名为其他名称,一旦它被删除,然后在 XCode 中将您刚刚导入的名称(PlannerFix)重命名为与以前相同的名称在原始应用中
  • 除非您特别引用模型名称,否则应用程序将在应用程序包中查找所有模型并将它们合并 - 这就是您必须取消引用不正确模型的原因
【解决方案2】:

您应该将模型恢复为 App Store 中的模型。那么你应该 Add new model version 你的核心数据模型。如果您无法恢复到该模型,则应尝试使其完全保持原样。

完成新模型版本后,您应该选择该模型并进行更改。

【讨论】:

  • 如何将模型恢复为 App Store 中的模型?抱歉这个愚蠢的问题......
  • 我不是说使用你在 App Store 中的那个。只是与您上传应用时使用的文件相同:)
  • 是的,但是我已经对该文件进行了更改...如何才能像以前一样获得它?
  • 如果你没有任何副本/版本控制或任何东西,你必须记住它是怎样的。你没有本地 Git 吗?如果这样做,您可能可以右键单击您的模型并选择“源代码控制”。您也可以从“源代码管理”菜单中执行此操作,然后“放弃所有更改”
【解决方案3】:

如果您不使用 Git(顺便说一句,这真的非常糟糕),您可以从 App Store 安装您的应用程序并使用一些 iPhone 文件管理器从您的应用程序中获取旧的 mom 文件。它将位于 /apps/yorapp/youapp.app/ 文件夹中,扩展名为 .mom 试试iExplorer,例如,它是免费的。

【讨论】:

  • 不错,没想到。 @Abdullah,如果您没有版本控制,请执行此操作。
  • 嗨,只有一个问题...我有 .mom 文件,但我该怎么处理它?
  • 我应该将它添加到我的项目中吗?
  • 您将其添加到模型文件的捆绑包中;替换那里的那个。打开您的项目核心数据模型文件,您不小心更改了该文件;在里面你会看到 .mom 文件。将其替换为您从上述建议中提取的 .mom。
  • 您正在从 Xcode 中显示视图,我们正在谈论文件系统包。显示捆绑内容...此外,您似乎确实有一个版本化模型,只是在您上次不小心更改文件时忘记添加另一个版本?更简单的方法可能是从应用程序包中获取整个 .xcdatamodel 文件并用它替换项目的模型。然后从你的下一个版本重新开始,并再次介绍你最近的更改,这次是正确的
猜你喜欢
  • 1970-01-01
  • 2011-06-23
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2012-08-17
  • 1970-01-01
  • 2013-01-27
相关资源
最近更新 更多