如何使用预加载的coreData发布应用程序?

时间:2015-05-14 13:30:57

标签: xcode swift core-data osx-yosemite

我尝试找到使用一些预加载数据发布应用的最佳方法。 我有一个有2个表的应用程序。我想用一些数据填充这个表。问题是数据不仅仅是文本信息。 1实体包含大约40个属性(数字,字符串,可变形数据),因此嵌入在代码中它不是解决方案。

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

  1. 编写一个非常小的CLI OS X应用程序,它代表现有的Core Data堆栈。
  2. 此CLI在已知位置创建预先填充的SQLite文件。
  3. 将此CLI作为构建过程的一部分运行
  4. 将创建的SQLite文件包含在应用包中
  5. 启动时,如果目标SQLite文件不存在(NSFileManager会告诉您);从您的应用包中复制SQLite文件。
  6. 正常启动。
  7. 这使得该过程可编写脚本且一致。它重用您现有的代码结构来构建预先填充的数据库,并让您使其保持最新。

答案 1 :(得分:1)

以下是我处理它的方式:

我使用默认设置,其中Core数据的后备存储是一个SQL文件。

我设置我的应用程序,在应用程序的文档目录中设置持久存储协调器和SQL文件。

我在模拟器上构建了预先填充的Core Data数据库。

然后我转到sim上的应用程序文档目录并将sql文件复制到应用程序包中。

在应用程序委托中我的应用程序的didFinishLaunching方法的开头,我检查核心数据数据库的sql文件是否存在于documents目录中。如果没有,我将它从包中复制到文档目录中。

然后我调用创建持久性存储协调器的代码,该协调器需要文档目录中的sql文件。首次启动时,这是从包中复制的初始文件。在后续启动时,它是文档目录中包含当前数据的工作文件。

答案 2 :(得分:-1)

当用户首次尝试访问数据时,通过执行获取请求或获取持久性存储中的对象计数来运行检查以查看持久性存储中是否存在任何对象。

如果获取请求的结果为nil,或者获取请求的对象数为0,则手动将数据从某个文件(JSON,plist,XML)加载到Core Data中。