【发布时间】:2009-11-12 03:52:36
【问题描述】:
我正在开发一个显示我正在运送的只读数据的应用程序。 它更像是一本书。
使用 SQLite 很容易,但我对性能和尝试使用 Core Data 不满意。
问题在于预填充核心数据是一个艰难的过程。
我的问题是: 是否可以构建一个使用相同数据模型进行预填充的助手 iphone 应用程序(供我使用)。 然后获取填充的 .xcdatamodel 文件并在我的原始应用程序中使用它?
我希望这是有道理的:)
阿达姆
【问题讨论】:
我正在开发一个显示我正在运送的只读数据的应用程序。 它更像是一本书。
使用 SQLite 很容易,但我对性能和尝试使用 Core Data 不满意。
问题在于预填充核心数据是一个艰难的过程。
我的问题是: 是否可以构建一个使用相同数据模型进行预填充的助手 iphone 应用程序(供我使用)。 然后获取填充的 .xcdatamodel 文件并在我的原始应用程序中使用它?
我希望这是有道理的:)
阿达姆
【问题讨论】:
我相信您要问的是您是否可以预先创建一个 CoreData 数据库并将其复制到 iPhone。对吗?
This article 会有所帮助。这是一个报价:
因此我建议以下五个步骤:
【讨论】:
有可能,我做到了。我使用此处的代码制作了一个桌面应用程序来读取 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 上使用模拟器。
【讨论】:
是的,您的数据源可以是任何您想要的数据源。其他建议都不错。创建一个托管对象模型 (.xcdatamodel),该模型与您要在应用程序中使用的模型相同。从文件中读取数据,创建托管对象的新实例并从文件中填充它。然后保存,进入 iPhone 模拟器中的捆绑包并复制它。这具有完全符合您需要的格式以及所有有用的元数据的额外好处。复制您的对象模型和托管对象类,一切顺利。
但请注意,如果您确实打算将其设为只读,并且在安装时使用它,它将安装在您完成的应用程序包中(在 Applications/{SIGNATURE}/Myapp.app 下)。如果您打算编辑此数据库或允许用户将其保存到其中,最好将其复制到您的用户数据库所在的 Applications/{SIGNATURE}/Documents 目录中。
【讨论】: