2017-03-01 109 views
0

我有一個領域對象的對象數組。如何創建獨立的Realm對象

RLM_ARRAY_TYPE(ContactObject) 
@interface PersonObject : RLMObject 
@property RLMArray< ContactObject *><ContactObject> *contactArray; 
@end 

在啓動PersonObject並向contactArray添加數據後,我試圖創建另一個臨時person對象。

PersonObject *tempPersonObj = [[PersonObject alloc]init]; 

我將舊的personObject賦給這個臨時對象;現在

tempPersonObj = oldPErsonObj; 

如果我刪除tempPersonOBj觸點陣列的對象,在oldPersonObj觸點陣列對象過於刪除。

這是怎麼發生的?有什麼辦法可以在不影響數據庫的情況下將數據複製到臨時對象中?

回答

1

當您指定tempPersonObj = oldPersonObj時,您並未製作舊人物件的副本。相反,您現在有兩個對同一個底層人員對象的引用,因此更改一個人員也會導致另一個人員更改。更一般地說,Realm提供的所有RLM*類型實際上只是對底層數據庫和對象的引用。

如果您需要一個臨時對象,則應該創建一個新對象(如您所做的那樣)並單獨複製屬性。對於列表,您應該將RLMObject複製出原始對象的列表屬性,並將它們添加到新對象的列表屬性中。

+0

儘管我複製了單個項目,但複製的對象在原始項目更改時會發生變化! SOmehow所有領域對象都已連接! –