2010-01-30 13 views
4

所以我的問題是我有一個NSManagedObject'A',它與'b'具有多重關係。因此,對於'A'的每個對象,可以有許多'b'。製作一個非託管的NSManagedObject的副本

現在,我想製作'b'的副本,以便可以修改'b',但不會保存到商店,但'A'可以保存'。

例如,

self.title = A.name; 
setOfB = A.setOfb; // This is still managed by CoreData 
temporaryCopyOfB = [setOfB unManagedCopy];// I want to make a copy of b which isn't managed 
b = [temporaryCopyOfB objectAtIndex:0]; 
b.property = newValue; 
[A save]; 

//[setOfB objectAtIndex:0].property should still == oldValue 

我知道,這是不是特別清楚,但我只想做一個管理對象,我可以編輯的臨時副本,但即使我不堅持的變化將打電話'保存'。

讓我知道如果您有任何問題,我知道我可能需要爲您澄清這一點。

回答

2

我看到一對夫婦的解決方案:

  1. 對於被臨時目的創建另一個實體。它將具有與正在複製的對象相同的父類,但它不具有所有關係。將其插入上下文並複製值。保留一組這些臨時對象,並在適當時從上下文中刪除所有這些對象。我之前完成了這個工作,但工作很複雜。

  2. 創建一個字典對象,並添加所有的託管對象的鍵和值。這可能更容易,但我沒有嘗試過。

請記住您是如何複製對象的。您可能想要創建更深的副本(創建一個新對象來保存屬性),而不是指向與原始對象相同的屬性對象。

相關問題