1

我最近玩弄了很多核心数据,让我烦恼的是你创建了一个 .xcdatamodeld 来创建你的基础结构,然后 xcode 将它转换成一个 .momd 文件

我的问题是:是否可以以编程方式进行转换,而不是由 xcode 完成?

例如,假设我们不能在 iOS 应用程序中从 Internet 下载 xcdatamodeld 文件,并让它解释它并创建底层基础。

4

3 回答 3

3

如果你下载整个xcdatamodeld包(它是一个目录)并解压它,你可以使用我momcom项目中的代码将它编译成.momd. 然后,您可以像任何其他数据模型一样加载它。这个项目在某种程度上仍然是实验性的,但到目前为止它在测试中表现良好。[更新:该项目无法在 iOS 上运行,因为它使用NSXMLDocument. 如果你想试试这个,你可以使用TouchXML,它被设计为NSXMLDocument. 我不知道在您自己的应用程序中编译核心数据模型的任何其他选项。]

关于数据模型和持久存储匹配的通常规则适用。除非您处理模型迁移,否则您不能只使用新编译的模型并将其与现有商店一起使用。另外,我不知道 Apple 对下载新数据模型文件的应用程序的态度是什么——这可能很好,或者可能会给你带来一些麻烦。

于 2013-06-06T16:40:22.060 回答
3

您可以使用 Apple 的momc脚本从xcdatamodeld 源创建一个 momd 文件。

一个 xcdatamodeld “source” 目录被编译成一个 momd 部署目录,一个 xcdatamodel “source” 文件被编译成一个 momd 部署文件。

(如此处解释https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/articles/cdUsingMOM.html

如何使用脚本:

  1. 制作要转换的 xcdatamodeld 文件的副本。它将被替换。
  2. 打开终端并转到 Developer bin 文件夹

    cd /Applications/Xcode.app/Contents/Developer/usr/bin/

  3. 在您的 xcdatamodeld 文件上运行momc脚本

    用法:momc 源目标

    示例(放置扩展名很重要):

    ./momc input.xcdatamodeld 结果.momd

于 2013-10-29T15:21:17.683 回答
0

不,您不能从 Internet 下载 xcdatamodeld 文件并使其正常工作。如果你这样做,你的程序会因为错误的数据模型而崩溃。您的数据模型需要在主包中,并且您必须选择当前数据模型。核心数据维护模型版本和一些关于你的数据模型的信息。即使您更改模型并且不迁移模型,您的程序也会崩溃,您必须从设备/模拟器中删除应用程序。

但是,您可以下载 .sqlite 数据库,但数据模型应该相同。

于 2013-06-06T09:42:08.633 回答