2016-01-22 59 views
0

我的应用程序从我的后端加载用户信息,然后尝试使用核心数据保存所有内容。我有几个实体,在我的数据模型中有一对多关系。我的问题是,如果我的数据库中的数据发生变化,并且我需要修改实体之间的关系,例如添加/删除,那么是否需要进行大量迁移?我已经在网上搜索和阅读了很多,看起来轻量级迁移不会这样做,因为我不是手动添加属性/实体。如果我确实需要进行沉重的迁移,那么会怎样呢?我可以找到关于大量迁移的地方。我是否需要大量迁移以修改核心数据中的关系?

我也想过每次修改之前删除以前的数据模型,然后保存整个新的实体。我不确定这是否是一种好方法,是否有更好的方法来缓存/存储从后端检索的数据?

+0

我可以问(愚蠢的问题),你的意思是与后端的东西,通常Coredata处理由本身就是数据存储(数据库,XML,文件)和视图之间的通信,所以在我做出更多评论之前,我需要了解您是否不是复制功能(如使用核心数据并同时使用手动创建的sqlite文件) 。 – JuValencia

+0

我使用Parse作为我的后端,所以基本上每次我对Parse进行查询并获取我需要的数据时,我都想使用Core Data存储它,这样我就不必每次页面都随机查询呈现。 – jackson

+1

你想更改数据模型还是要更改数据? – Willeke

回答

0

也许你已经做到了这一点,但如果你没有,当你改变模型,你需要保存为一个新的版本,然后选择一个当前版本与该错误应该消失。

步骤如下:

  1. 选择Model.xcdatamodeld。
  2. 单击编辑器>添加模型版本....
  3. 单击完成以接受模型2作为版本名称。
  4. 选择Model.xcdatamodeld。
  5. 单击视图>实用程序>显示文件检查器(或按Option +⌘+ 1)。
  6. 设置当前的模型版本,以模型2

下面的链接以解释这个过程: Learning CoreData for iOS: Managed Object Model Migration

0

如果您不更改模型,您需要迁移。

也就是说,苹果使用它的意义上的“迁移”,即仅仅参照数据模型。你的意思可能是数据“更新”。

以通常的方式进行数据更新:获取要修改的对象,更改它们(例如,将不同的对象设置为关系),保存。

+0

它一直抛出一个错误:与原始数据存储不兼容(类似的东西),我没有改变数据模型,所以这是因为我没有为属性的NSManagedObject子类? – jackson

+0

我相信你*确实*改变了数据模型。最简单的方法是从设备/模拟器中删除应用程序并再次运行。 – Mundi