我最近玩弄核心数据很多,而且我的错误是你创建一个.xcdatamodeld来创建你的基础结构,然后xcode将它转换成.momd文件
我的问题是:是否可以通过编程方式进行转换,而不是通过xcode完成转换?
比方说,我们不能在iOS应用程序中从互联网上下载xcdatamodeld文件,并让它解释它并创建底层基础。
答案 0 :(得分:3)
如果您下载整个xcdatamodeld
包(它是一个目录)并将其解压缩,您可以使用我的momcom项目中的代码将其编译为.momd
。然后,您可以像任何其他数据模型一样加载它。这个项目仍然有点实验性,但到目前为止它在测试中表现良好。 [更新:该项目不会在iOS上运行,因为它使用NSXMLDocument
。如果您想尝试此操作,可以使用TouchXML
,它旨在成为NSXMLDocument
的替代品。我不知道在您自己的应用程序中编译Core Data模型的任何其他选项。]
关于拥有数据模型和持久存储匹配的常规规则适用。除非您处理模型迁移,否则您不能只使用新编译的模型并将其与现有商店一起使用。此外,我不知道Apple对于下载新数据模型文件的应用程序的态度是什么 - 它可能没问题,或者它可能会让你遇到麻烦。
答案 1 :(得分:1)
您可以使用Apple的 momc 脚本从xcdatamodeld源创建一个momd文件。
将xcdatamodeld“source”目录编译到momd部署目录中,并将xcdatamodel“source”文件编译为mom部署文件。
(正如此处所解释的 https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/articles/cdUsingMOM.html )
如何使用脚本:
打开终端并转到Developer bin文件夹
cd /Applications/Xcode.app/Contents/Developer/usr/bin/
在xcdatamodeld文件上运行 momc 脚本
用法:momc源目的地
示例(放置扩展名很重要):
./ momc input.xcdatamodeld result.momd
答案 2 :(得分:0)
不,你不能从互联网上下载xcdatamodeld文件并使其正常工作。如果这样做,您的程序将因错误的数据模型而崩溃。您的数据模型需要位于主捆绑中,您必须选择当前的数据模型。核心数据维护模型版本和有关数据模型的一些信息。即使您更改模型并且不迁移模型,程序也会崩溃,您必须从设备/模拟器中删除该应用程序。
但是,您可以下载.sqlite数据库,但数据模型应该相同。