使用Core Data迁移将多对多关系更改为一对一

时间:2012-06-17 10:54:59

标签: objective-c cocoa-touch core-data ios5 migration

当我尝试将数据模型从旧模式迁移到新模式时,我遇到了一些问题。我一直在网上搜索并试图找到这个问题的解决方案已经有几个星期了,但仍然没有运气。

这就是我之前的数据模型:

A <<--->> B
  <<--->> C

之后:

A <<---> B
  <<---> C

正如您所看到的,实体A到B和A到C之间的关系从多对多关系变为多对一关系。问题是让迁移工作。如果我尝试使用轻量级迁移,我会在控制台中得到它(以及许多其他东西):

  

无法从多对多关系映射到一对一关系。

在考虑文档时这是有道理的。所以我猜我需要使用映射模型和自定义迁移策略来处理关系变化。如果我使用自动生成的映射模型,我只会得到一个“未解决的错误”,大约在日志的一半,它说它无法找到迁移的映射模型。我假设这就像一般的错误描述,因为对模型的一个微不足道的改变(即改变某些东西的名称)起作用(意味着它确实可以找到映射模型)。所以我的问题是:如何让映射模型正确迁移商店?您能否描述一下我需要做些什么来实现这一目标?我猜我需要使用这种方法:

- (BOOL)createRelationshipsForDestinationInstance:(NSManagedObject *)dInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError *__autoreleasing *)error

在自定义策略中,但是在此方法中我需要使用哪些代码才能使其工作(如果您甚至可以对其进行概括)?

顺便说一下,我正在使用Xcode 4.3.2,这个应用程序的最低iOS要求是iOS 5.

提前感谢您的帮助。

0 个答案:

没有答案