初始化iPhone应用程序核心数据的最佳方法?

初始化iPhone应用程序核心数据的最佳方法?,iphone,core-data,Iphone,Core Data,我有一个相当长的方法来初始化我的核心数据 我可以想出两种方法在最终的应用程序中实现这一点: 在应用程序中包含该方法,如果没有数据,则执行该方法 从应用程序中排除该方法,提前创建SQLite数据库,将其包含在捆绑包中,如果没有数据,则将其复制到documents文件夹 哪一个更好,或者我应该扔硬币吗?其中一个在将来的操作系统更新中更安全吗 无论您选择哪种方式,通过自动迁移,将来对数据模型的更新都会很容易,但是如果您选择捆绑数据库,将来的默认值将更难处理。例如,您的长期用户将不会获得您添加的任何

我有一个相当长的方法来初始化我的核心数据

我可以想出两种方法在最终的应用程序中实现这一点:

  • 在应用程序中包含该方法,如果没有数据,则执行该方法

  • 从应用程序中排除该方法,提前创建SQLite数据库,将其包含在捆绑包中,如果没有数据,则将其复制到documents文件夹


哪一个更好,或者我应该扔硬币吗?其中一个在将来的操作系统更新中更安全吗

无论您选择哪种方式,通过自动迁移,将来对数据模型的更新都会很容易,但是如果您选择捆绑数据库,将来的默认值将更难处理。例如,您的长期用户将不会获得您添加的任何未来默认值,因此,如果您添加了一个很棒的新功能,并且他们已经有了一个DB,那么他们将不会获得该功能的默认值,除非您将其添加到代码中,此时您必须编写代码。因此,我倾向于基于方法的解决方案

  • 创建具有“CurrentDataVersion”键的NSUserDefaults键
  • 当应用程序运行时,读取此键,将其与表示当前数据的硬编码版本进行比较,然后使用它确定应添加哪些数据
  • 添加新数据后,更新CurrentDataVersion密钥,使其不再运行
  • 这解决了老客户获得较新默认值的问题,并且在将来的更新方面更加方便用户。因为您提到您的方法很长,所以向客户展示这一点的标准方式是安装一个微调器和类似“初始化…这只会发生一次”之类的东西