如何将我的应用程序与预先填充的核心数据数据库一起发货?
我的应用程序使用核心数据,我想要一些默认的条目在里面。 如何做到这一点的最佳做法是什么?
如果您已经通过临时例程来加载预加载数据,以便在您当前的代码中进行testing,那么没有理由不能使用它在模拟器目录中创build的sqlite文件(无需另外编写Mac应用程序)。
如果你还没有填写这个数据库,你仍然可以编写一个iOS应用程序。 您已经编写了将数据添加到商店的方法,以便您可以使用它们导入预加载数据。
无论哪种方式,你会从模拟器的目录抓取sqlite文件,并将其添加到您的应用程序的包; 在首次启动之前,您需要将Core Data指向它,然后将其复制到应用程序目录中的相应位置。 如果它真的很大,那么缺点是在软件包中会有一个副本,另一个在磁盘上,但是除了通过networking抓取数据之外,您可以做的不多。
正如其他人所build议的那样,如果数据量很小,您可以在首次启动时使用您已经编写的用于将数据添加为常规应用程序工作stream程的一部分的方法导入。
请参阅CoreDataBooks示例 ,该示例在首次启动时具有用于复制数据库的示例代码。
编辑:我创build了一个核心数据框架(阅读这里: http : //bikepress.org/?p=1120 ),包括这个function。
我只是创build一个数据库,并把它添加到我的目标,以便Xcode将其复制到应用程序包。 在第一次启动只是从应用程序包复制到例如。 文档目录或应用程序需要数据库的位置。
在app store有核心数据编辑器 。 另外,你可以build立自己的简单的Mac应用程序只为这个特定的数据库,并从那里pipe理它。 如果默认条目的数量很less,那么最好将它存储在plist中,或者在第一次启动后将其加载到数据库中。
在iOS 5中,如果将数据库文件放入资源包中,我的应用程序就被拒绝了。 所以,我不得不从互联网下载数据库。
- 将iOS Core Data添加到现有项目 – 解包可选值时发生错误
- iOS 9和iOS 10 CoreData
- 无法创build具有nil模型错误的NSPersistentStoreCoordinator
- 如何通过CoreData模型创build一个新的实体(表)?
- 核心数据嵌套托pipe对象上下文和频繁死锁/冻结
- 通过以编程方式设置密钥来dynamic创buildNSPredicate
- iOS:在核心数据谓词中使用@min和@max
- 当从Child ManagedObjectContext和Parent ManagedObjectContext保存时,CoreDataTableView不更新
- 核心数据连接表中有许多通过获取属性的谓词