2011-12-25 39 views
0

我想創建一個新的核心數據實體和複製[一些]其內容從舊的實體,使用以下(簡化)代碼:核心數據 - 將關係複製到新實體?

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

我必須做什麼才能將對象保留在舊實體中以及新實體中?

回答

1

你的關係類型是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