当我的应用首次出现在iPhone或iPad上时,CoreData的持久存储(假设SQLite)如何实现?
如果它与应用程序一起部署,我怎么知道它不会充满测试数据?相反,如果我希望预先填充一些数据,我该怎么做?
答案 0 :(得分:0)
首次运行时会自动创建吗?
是 - 持久性存储协调器上的addPersistentStore...
方法创建数据库文件(如果该文件尚不存在)。这是作为模板代码的一部分完成的。 iOS10与新版NSPersistentContainer
略有不同,但原理相同。
我是否必须使用代码创建它?
见上文 - 框架类为您创建它。
它是由Xcode创建并与应用程序一起部署的吗?
否 - 模型执行,用于在文档目录中的运行时创建数据库。如果它与应用程序一起部署,它将在捆绑中,并且将是只读的。开发时创建的数据库存在于测试设备的文档目录中,而不是构建产品的一部分。
如果您想要包含种子数据,那么最简单的方法是创建一个共享相同模型的单独应用程序(可能是Mac应用程序)。然后,您可以使用它来管理种子数据,并将结果数据添加到主应用程序包中。首次运行时,您可以在创建持久存储之前将此数据从捆绑包复制到文档目录。
我写了这个方法here,请注意这是很久以前所以有些事情可能已经改变了。
答案 1 :(得分:0)
你可以看看这个教程系列,它详细解释了所有这些是如何组合在一起的。