我正在开发一个显示我正在发送的只读数据的应用程序。 它更像是一本书。
使用SQLite很容易,但我对性能不满意并尝试使用Core Data。
问题在于预填充核心数据是一个艰难的过程。
我的问题是: 是否可以构建一个助手iphone应用程序(供我使用),它使用相同的数据模型进行预填充。 然后获取填充的.xcdatamodel文件并在我的原始应用程序中使用它?
我希望这是有道理的:)
艾德
答案 0 :(得分:3)
我相信您要问的是您是否可以预先创建CoreData数据库并将其复制到iPhone。这是对的吗?
This article会有所帮助。这是一个引用:
因此,我建议采用以下五个步骤:
答案 1 :(得分:3)
有可能,我已经做到了。我创建了一个桌面应用程序,使用以下代码从CSV文件中读取:
http://www.mac-developer-network.com/columns/coredata/may2009/
我只需改变CSV部分的工作方式,然后更改模型。
applicationDidLaunch
方法中创建了一些代码,用于将sqlite复制到iPhone上的文档文件夹中(如果它尚未存在)。将它放在资源文件夹中可能并不好。即使您将数据库用作只读数据库,Core Data也可能希望为其编写内容。虽然不确定.. 桌面和iPhone Core Data sqlite文件似乎是完全相同的格式。只要具有相同的数据模型,您就可以将一个sqlite文件传输到另一个应用程序(iPhone到iPhone)。在另一个应用程序中,我使用NSXMLParser创建Core Data sqlite文件,然后使用模拟器将其传输到另一个应用程序,在iPhone上。
答案 2 :(得分:0)
是的,您的数据源可以是您想要的任何数据源。其他建议很好。创建与您要在应用程序中使用的内容完全相同的托管对象模型(.xcdatamodel)。读入文件中的数据,创建托管对象的新实例并从文件中填充它。然后保存,并潜入iPhone模拟器中的捆绑包并将其复制。这还有一个额外的好处,就是您可以使用所有有用的元数据。复制对象模型和托管对象类,你就可以了。
但是,请注意,如果您确实打算将其设置为只读,并且在安装时使用它,则会将其安装在已完成的应用程序包中(在Applications / {SIGNATURE} /Myapp.app下)。如果您打算编辑此数据库或允许用户保存到该数据库,最好将其复制到用户数据库所在的Applications / {SIGNATURE} / Documents目录。