使用 coredata 导入初始数据的方法

Posted

技术标签:

【中文标题】使用 coredata 导入初始数据的方法【英文标题】:Method for import initial data with coredata 【发布时间】:2012-07-03 12:20:23 【问题描述】:

我在 ios 应用中导入数据时遇到问题。

数据与 coredata 一起存储。我试图用一个按钮导入数据。点击后,数据先存储在json格式的txt文件中,会存储到sqllite文件中。

我的问题是,导入这么多数据非常慢,用户点击按钮或等待导入初始数据不友好。有没有更好的数据导入方式?

谢谢。

【问题讨论】:

【参考方案1】:

这取决于。例如,您可以只在– applicationDidFinishLaunching: 或当用户触摸特定按钮时导入数据。

在这两种情况下,我都会在后台导入数据。这使您可以避免 UI 冻结(如果您有大量数据)并显示一种进度指示器。也许用户会更乐意知道发生了什么。

要在后台导入数据,您可以使用新的 iOS 5 API for Core Data 或遵循 importing-and-displaying-large-data-sets-in-core-data/ 上的 Marcus Zarra 教程。

另一种方法是从预先填充的数据库开始。创建一个虚拟项目,在其中填充该数据库(使用您的 JSON 文件),然后在您的实际应用程序项目中使用该数据库。

希望对您有所帮助。

编辑

在应用启动时导入数据对用户不友好。

为什么不呢?

所以我试图将数据 - db 文件放入存档中并 发送到应用商店。这样,我想知道我是否可以得到 db 文件在测试期间完成导入数据和 初始数据是可以接受的。并将这个测试数据库文件放入存档中 并在应用商店发布。所以用户不需要在 第一的。只需使用测试数据的副本

我不确定我是否明白了这一点。这就是我对preload and import existing data 的意思。当您将 db 文件提交到应用商店时,您需要将其与您的应用一起提供。例如在应用程序目录中。您也可以在捆绑包中发货。但在这种情况下要注意,因为 db 文件是只读的(如果要修改,则需要移动到其他地方)。

我建议您创建一个虚拟项目,因为这是我在需要创建 prepolutade 数据库时的个人方式。这使您可以保持更清洁的项目。但是您也可以在实际项目中填充该数据库。如果您按照第一种方式,您可以简单地将 sql 文件移动到您的应用程序的应用程序目录中,然后让核心数据读取它。

【讨论】:

我将尝试虚拟项目方法。现在我只是在测试期间导入数据。但是当我开始存档时,我无法获取 db 文件。是否可以在测试期间获取 db 文件并将其作为资源文件添加到存档中并将 db 文件指向此文件。 @seanxiaoxiao 对不起,你能解释一下你的意思 是否可以在测试期间获取 db 文件并将其作为资源文件添加到存档中并将 db 文件指向这个文件?我无法理解。谢谢。 对不起@Flex_Addicted。情况是这样的。在应用程序启动时导入数据对用户不友好。所以我试图将数据 - db文件放入存档并将其发送到应用商店。这样,我想知道是否可以在测试期间获得db文件,即导入数据完成,初始数据可以接受。并将此测试数据库文件放入存档并发布到应用商店。所以用户不需要首先导入数据。只需使用测试数据的副本。 链接raywenderlich.com/12170/…上的说明太复杂了。有没有一种简单的方法可以在 App Store 上随应用分发 Code Data 数据库?

以上是关于使用 coredata 导入初始数据的方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔路径

为啥 Core Data 托管对象的 +initialize 方法会被调用两次?

我应该使用 SQL 还是 Core Data?

使用 Core Data 最有效的方法是啥?

Core Data 应用程序不会从持久存储中加载数据

BLE + Core Data 导致冻结(信号量等待陷阱)