iOS - 将数据导入CoreData

时间:2015-09-24 15:39:24

标签: ios sqlite core-data import seed

我需要在iOS(7+)应用程序的数据库中导入一些数据。

当我使用Coredata时,最好的方法似乎是创建一个种子db:https://www.objc.io/issues/4-core-data/importing-large-data-sets-into-core-data/ 这意味着我必须创建第二个项目(例如:桌面应用程序),该项目负责创建和填充数据库。

我首先关心的是:这个项目的db模型应该与app一样吗?因此,如果应用程序具有包含许多实体的数据库,则必须在第二个项目的模型中复制整个结构,并且对于任何将来的更新,必须保持两个结构相同。 我是对的吗?

这似乎要求完成和维护,而且查找和复制种子sqlite文件的过程并不简单。

那就是说,因为我需要将大约80k个条目导入到一个表中,所以在iOS应用程序中包含csv文件并在第一次启动时导入所有数据呢?

感谢任何提示, DAN

1 个答案:

答案 0 :(得分:0)

db模型是否应该相同:它不需要

CoreData不是db it,所以你可以拥有比传统db更灵活的模型

如果您选择维护的模型与服务器使用或由API返回的模型不同,则可以在保存到CoreData之前使用中间模型。

我个人使用Mantle

因此,结构将是CoreData< - > Mantle< - > API

这将为您提供更大的灵活性,因为您可以从API接收任何结构,并使用Mantle来管理您在应用中使用的结构。

ps:通常,您不想经常更改数据模型。如果您的数据模型不断变化,可能需要重新考虑结构

要导入条目,您可以使用JSON文件。

  1. 将JSON文件添加到项目中
  2. 第一次启动应用时,反序列化JSON文件,循环访问它并为JSON中的每个项目创建新实体
  3. 请注意,如果您有80k条目,这可能需要很长时间

    This tutorial向您展示您需要做什么