【问题标题】:how to remove datamodel from core data and add a new one?如何从核心数据中删除数据模型并添加一个新模型?
【发布时间】:2010-09-08 15:45:18
【问题描述】:
我正在开发一个 iphone 应用程序项目。我们已经发布了一个带有 coredata 模型的应用程序,现在在我们的新版本中,我们希望删除旧的并添加一个新的。 (我们没有在现有的核心数据模型上存储任何用户值)。我们忘记从应用程序文件夹中删除 xcdatamodel,但我们删除了所有与核心数据相关的代码。现在我们必须删除 xcdatamodelfile 及其相关的 h 和 m 类。
在我们的新项目包中,我们可以创建一个新的核心数据模型并提交该应用程序吗?我想知道这个新的 xcdatamodel 在更新我们的新版本时会给用户带来任何问题?
谢谢!
拉姆
【问题讨论】:
标签:
iphone
objective-c
core-data
【解决方案1】:
在我们的新项目包中,我们可以
创建一个新的核心数据模型和
提交该申请?
永远不要忘记在更改数据模型后进行完全重建,因为构建过程有时无法正确识别数据模型更改
我喜欢
知道这个新的 xcdatamodel 将创建
用户的任何问题,同时
更新我们的新版本?更新我们的新版本?
由于您不需要任何旧数据/迁移,因此在新位置创建持久存储,旧模型/旧数据文件根本不会成为问题。 (假设模型已被新模型正确替换)
【解决方案2】:
答案有点棘手,但这对我来说总是有效的。这是为了干净安装新的兼容 .sqlite 文件,不是迁移!
启动模拟器,删除应用和数据(删除应用后的弹出窗口)。
退出模拟器
在对数据模型进行任何编辑后打开 X-Code
如果需要更新数据模型版本:
Editor > Add Model Version...
- 在出现的对话框中设置您的首选项(最好是向上计数)
- 点击 {appname}.xcdatamodeld 然后在最右侧的窗格中
- 点击最右列顶部 3 个图标中的左侧图标
- 在
Versioned Core Data Model 下选择您刚刚创建的那个
删除{appname}.sqlite文件(或备份,从项目文件夹中删除,删除引用)
清理应用程序 (Product > Clean)
在模拟器中运行应用程序(对于本教程,我将假设 4.2)
模拟器运行时,在 Finder 窗口中,导航至:
{home} > Library > Application Support > iPhone Simulator > 4.2 > Applications > {random identifier} > Documents > {appname}.sqlite
复制此文件到另一个位置
停止在 X-Code 中运行您的应用
将 {appname}.sqlite 文件拖放到 X-Code 中的文件列表中。
在弹出的对话框中,确保选中copy to folder复选框。
Product > Clean
然后在模拟器中再次运行应用程序
现在你应该有一个可以工作的 sqlite 文件了!
干杯,
罗伯特