何时创建CoreData持久性存储?

时间:2016-08-14 05:18:37

标签: ios core-data

当我的应用首次出现在iPhone或iPad上时,CoreData的持久存储(假设SQLite)如何实现?

  • 首次运行应用时会自动创建吗?
  • 我是否必须使用代码创建它?
  • 它是由Xcode创建并与应用程序一起部署的吗?

如果它与应用程序一起部署,我怎么知道它不会充满测试数据?相反,如果我希望预先填充一些数据,我该怎么做?

2 个答案:

答案 0 :(得分:0)

  

首次运行时会自动创建吗?

是 - 持久性存储协调器上的addPersistentStore...方法创建数据库文件(如果该文件尚不存在)。这是作为模板代码的一部分完成的。 iOS10与新版NSPersistentContainer略有不同,但原理相同。

  

我是否必须使用代码创建它?

见上文 - 框架类为您创建它。

  

它是由Xcode创建并与应用程序一起部署的吗?

否 - 模型执行,用于在文档目录中的运行时创建数据库。如果它与应用程序一起部署,它将在捆绑中,并且将是只读的。开发时创建的数据库存在于测试设备的文档目录中,而不是构建产品的一部分。

如果您想要包含种子数据,那么最简单的方法是创建一个共享相同模型的单独应用程序(可能是Mac应用程序)。然后,您可以使用它来管理种子数据,并将结果数据添加到主应用程序包中。首次运行时,您可以在创建持久存储之前将此数据从捆绑包复制到文档目录。

我写了这个方法here,请注意这是很久以前所以有些事情可能已经改变了。

答案 1 :(得分:0)

你可以看看这个教程系列,它详细解释了所有这些是如何组合在一起的。

Core Data and Swift Tutorial Series - envatotuts+