如何创建独立的Realm对象

时间:2017-03-01 19:37:41

标签: objective-c realm

我有一个包含对象数组的领域对象。

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中的联系人数组对象也会被删除。

为什么会这样?有没有办法在不影响数据库的情况下将数据复制到临时对象中?

1 个答案:

答案 0 :(得分:1)

当您指定tempPersonObj = oldPersonObj时,您不会复制旧人物对象。相反,您现在有两个对相同底层人物对象的引用,因此更改一个将导致另一个对象也发生更改。更一般地说,Realm提供的所有RLM*类型实际上只是对底层数据库和对象的引用。

如果您需要临时对象,则应创建一个新对象(正如您所做的那样)并单独复制属性。对于列表,您应该将RLMObject复制出原始对象的list属性,并将它们添加到新对象的list属性中。