核心数据 - 将关系复制到新实体?

问题描述:

我想创建一个新的核心数据实体和复制[一些]其内容从旧的实体,使用以下(简化)代码:核心数据 - 将关系复制到新实体?

NSManagedObjectContext *context = [[UIApplication sharedApplication] delegate]).managedObjectContext; 
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context]; 
MyEntity *newEntity = [[MyEntity alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:context]; 
newEntity.myRelationship = oldEntity.myRelationship; 

被执行的最后一个任务之前,oldEntity有对象由myRelationship指出。

转让后,newEntity.myRelationship指向相同的对象,但oldEntity.myRelationship变成nil

我必须做什么才能将对象保留在旧实体中以及新实体中?

你的关系类型是X
oldEntitynewEntity都有一个one-to-one关系到X

我认为您从X到新老实体类型的关系也是one-to-one
你应该改变这一点。

在你的核心数据模型中,你可以改变它。 它应该看起来像:

Type X <-->> Type Y
哪里型Y是旧的和新的实体类型。

您应该重新生成类型为XNSManagedObject类。如果在实现中有逻辑,则应将其复制并粘贴到新生成的文件中。

请注意,实体X现在有多于1个Y型实体,因此它将是一个集合而不是一个实体。

+1

注意:如果你想保持第一个对象的关系,你可能想选择另一个单词而不是'old'。这意味着该对象应该被删除。 – 2011-12-25 14:40:49

+0

谢谢。我认为1:1关系只在实体保存时才会执行(我在临时保存之前需要临时保存旧数据)。至于名称,这是一个简化的代码,不是我的实际代码 - 但最终旧的实体被删除,因此使用OLD可能是合适的。 – 2011-12-25 14:53:36