2014-11-25 44 views
1

我的iOS应用程序使用CoreData,并且每次首次打开应用程序时都需要使用默认值填充CoreData设备相关的表。将持久数据保存为CoreData的txt文件是否安全?

所以我使用NSUserDefaults来检查它是否是第一次打开。如果是第一次,我用已经创建的值填充表格(在CoreData上),并通过逐行读取和分离方式从txt文件中格式化行。

而我的问题是,它是安全和最快的方式来使用txt文件进行此类操作?

回答

5

一个更好的选择是在应用程序包中保留一个“固定的”sqlite文件并检查文档目录中是否存在SQLite文件。如果文件不存在,则将应用程序包中的固定数据复制到文档目录中。

这将跳过整个解析逻辑,并允许您的应用程序更快地启动。

+0

我还需要检查SQLite文件是否存在,因为在运行时没有添加或删除数据(用户永远无法更改CoreData上的项目),而不是每次首次启动应用程序时直接复制默认SQLite文件? – JustWork 2014-11-26 13:38:00

+0

如果数据是**从未**更改,则将其保留在AppBundle中。这也使您可以轻松更新后续版本的数据。 – 2014-11-26 16:07:42

+0

所以我的问题的答案是否定的,对吧?感谢您的帮助。 – JustWork 2014-11-26 16:29:29

0

马库斯的方法也是我会推荐的。但是您仍然可以在开发过程中继续使用解析代码,以便创建种子SQLite文件。当您发布应用程序时,请将最新的种子商店打包为捆绑资源并禁用/删除您的解析代码。

+0

解析代码应该是构建过程的一部分,以便种子数据始终保持新鲜。 – 2014-11-26 16:07:07