预先存在的核心数据数据

时间:2011-05-18 21:37:27

标签: iphone objective-c xcode core-data

我环顾四周但却找不到我要找的东西。我需要一些数据基本上预先加载到应用程序中。我知道我可以在第一次发射时把它全部放进去但是想在第一次发射时远离加载时间很长并且已经装好了。

是否可以将实体插入到核心数据中,以便在?

中进行硬编码

1 个答案:

答案 0 :(得分:5)

是的,您在应用包中包含一个预先填充的数据存储,并在应用启动过程中将其从包中复制到文档目录 - 检查数据存储是否存在,如果不存在,则执行复制。您是在第一次访问Core Data堆栈之前执行此操作。

有几种方法可以做到这一点。懒惰的程序员方式是在手机或模拟器中将默认数据输入到应用程序中,获取数据存储文件,并将其包含在Xcode项目中。缺点是,如果您以后需要返回并编辑数据模型,它将无法正常工作。

另一种选择是在Mac上创建一个编辑器应用程序,它使用与iPhone应用程序相同的Core Data模型(它们兼容)并编辑Mac应用程序中的数据。 Jeff Lamarche在他的一个blog postings中谈到了这一点。我做了类似的事情,除了我编写了一个命令行工具来从网站(在我的例子中是XML数据)下载最新数据并将XML解析为NSManagedObjects。

This StackOverflow文章讨论了有两个数据存储的更复杂的选择 - 一个用于系统数据,一个用于用户数据 - 并让Core Data在运行时使用这两个存储。