为只读应用程序预填充核心数据

时间:2009-11-12 03:52:36

标签: iphone core-data

我正在开发一个显示我正在发送的只读数据的应用程序。 它更像是一本书。

使用SQLite很容易,但我对性能不满意并尝试使用Core Data。

问题在于预填充核心数据是一个艰难的过程。

我的问题是: 是否可以构建一个助手iphone应用程序(供我使用),它使用相同的数据模型进行预填充。 然后获取填充的.xcdatamodel文件并在我的原始应用程序中使用它?

我希望这是有道理的:)

艾德

3 个答案:

答案 0 :(得分:3)

我相信您要问的是您是否可以预先创建CoreData数据库并将其复制到iPhone。这是对的吗?

This article会有所帮助。这是一个引用:

因此,我建议采用以下五个步骤:

  1. 以逗号分隔文件创建数据,通常将每行数据(实体)放在文件的一行中,并用逗号分隔不同的列(其属性)。
  2. 编写独立程序并复制到主项目的.xcdatamodel文件中。
  3. 在新程序中编写代码,解析以逗号分隔的文件,并将信息插入到Core Data持久存储中,该存储应与主项目中的持久存储相同。
  4. 在模拟器中运行程序
  5. 将数据从Simulator的文档目录复制到实际项目的包中。

答案 1 :(得分:3)

有可能,我已经做到了。我创建了一个桌面应用程序,使用以下代码从CSV文件中读取:

http://www.mac-developer-network.com/columns/coredata/may2009/

我只需改变CSV部分的工作方式,然后更改模型。

  • 我将我的模型从模型构建器复制并粘贴到iPhone模型中。 (单击“网格”区域,选中全部,复制)
  • 然后我将sqlite数据库带到了桌面应用程序(在应用程序支持中找到它,在此应用程序的文件夹中)并将其放入资源文件夹
  • 我在applicationDidLaunch方法中创建了一些代码,用于将sqlite复制到iPhone上的文档文件夹中(如果它尚未存在)。将它放在资源文件夹中可能并不好。即使您将数据库用作只读数据库,Core Data也可能希望为其编写内容。虽然不确定..
  • 我在核心数据设置的文档文件夹中使用了sqlite文件。

桌面和iPhone Core Data sqlite文件似乎是完全相同的格式。只要具有相同的数据模型,您就可以将一个sqlite文件传输到另一个应用程序(iPhone到iPhone)。在另一个应用程序中,我使用NSXMLParser创建Core Data sqlite文件,然后使用模拟器将其传输到另一个应用程序,在iPhone上。

答案 2 :(得分:0)

是的,您的数据源可以是您想要的任何数据源。其他建议很好。创建与您要在应用程序中使用的内容完全相同的托管对象模型(.xcdatamodel)。读入文件中的数据,创建托管对象的新实例并从文件中填充它。然后保存,并潜入iPhone模拟器中的捆绑包并将其复制。这还有一个额外的好处,就是您可以使用所有有用的元数据。复制对象模型和托管对象类,你就可以了。

但是,请注意,如果您确实打算将其设置为只读,并且在安装时使用它,则会将其安装在已完成的应用程序包中(在Applications / {SIGNATURE} /Myapp.app下)。如果您打算编辑此数据库或允许用户保存到该数据库,最好将其复制到用户数据库所在的Applications / {SIGNATURE} / Documents目录。