2009-11-12 85 views
2

我正在处理显示只读数据的应用程序。 它更像是一本书。预填充只读应用程序的核心数据

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

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

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

我希望这是有道理的:)

艾德

回答

3

我相信你问的是你是否可以创建一个CoreData数据库的前期,并将其复制到iPhone。那是对的吗?

This article将有所帮助。这里有一个报价:

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

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

嗨Benjamin 我已阅读此页面。 我的问题是: 我可以使用一个独立的程序,专门用于填充CoreData数据库,并且在我输入数据后,我将填充的数据文件从文档目录复制到我的主包中。 要重写: can我用独立的应用程序替换CVS文件步骤以输入数据? – Adhamox 2009-11-12 04:03:43

+0

当然。只需消除步骤1.然后将第3步替换为允许您自己插入信息的屏幕,而不是解析任何数据文件。核心数据文件是其核心内容,只要您的.xcodedatamodel文件在项目之间相同,您就可以复制该文件并且它将起作用。 – 2009-11-12 10:11:57

+0

谢谢:)这是有帮助的 – Adhamox 2009-11-12 13:25:25

3

这是可能的,我已经做到了。

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

我不得不改变CSV部分的工作方式,而且要修改模型:我这里使用的代码做了一个桌面应用程序从一个CSV文件中读取。

  • 我将模型从模型构建器复制并粘贴到iPhone模型中。 (点击“网格”区域,全部选中,复制)
  • 然后,我将sqlite数据库生成的桌面应用程序(在应用程序支持中找到,在此应用程序的文件夹中),并将其放入资源文件夹
  • 我做了一些代码,在启动时,在applicationDidLaunch方法中将sqlite复制到iPhone上的文档文件夹(如果它不在那里)。有可能它在资源文件夹中是不好的。即使您将数据库用作只读数据库,Core Data也可能想要写入数据。不知道这个虽然..
  • 我用我的核心数据设置文档文件夹中的sqlite文件。

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

+0

也谢谢你nevan ..这个解决方案对我来说有点复杂,因为我是一个新手,但你明确地表达了这个概念。 – Adhamox 2009-11-12 13:26:01

0

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

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

相关问题