预先存在的核心数据数据

uta*_*hak 3 iphone xcode core-data objective-c

我环顾四周,但还没找到我想要的东西.我需要一些数据基本上预先加载到应用程序中.我知道我可以在第一次发射时将其全部放入,但是希望在第一次发射时远离加载时间很长并且已经加载.

是否可以将实体插入到核心数据中,以便对它们进行硬编码?

Jab*_*air 5

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

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

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

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