我有一个包含对象数组的领域对象。
RLM_ARRAY_TYPE(ContactObject)
@interface PersonObject : RLMObject
@property RLMArray< ContactObject *>< ContactObject > *contactArray;
@end
在我启动PersonObject并将数据添加到contactArray之后,我正在尝试创建另一个临时人物对象。
PersonObject *tempPersonObj = [[PersonObject alloc]init];
并将旧personObject指定给此临时对象;
tempPersonObj = oldPErsonObj;
现在,如果删除tempPersonOBj中的联系人数组对象,oldPersonObj中的联系人数组对象也会被删除。
为什么会这样?有没有办法在不影响数据库的情况下将数据复制到临时对象中?
答案 0 :(得分:1)
当您指定tempPersonObj = oldPersonObj
时,您不会复制旧人物对象。相反,您现在有两个对相同底层人物对象的引用,因此更改一个将导致另一个对象也发生更改。更一般地说,Realm提供的所有RLM*
类型实际上只是对底层数据库和对象的引用。
如果您需要临时对象,则应创建一个新对象(正如您所做的那样)并单独复制属性。对于列表,您应该将RLMObject
复制出原始对象的list属性,并将它们添加到新对象的list属性中。