【问题标题】:How to create independent Realm Objects如何创建独立的领域对象
【发布时间】:2017-03-01 19:37:41
【问题描述】:

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

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

在我启动 PersonObject 并向contactArray 添加数据后,我正在尝试创建另一个临时人员对象。

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

我将 old personObject 分配给这个临时对象;

   tempPersonObj = oldPErsonObj;

现在如果我删除 tempPersonOBj 中的联系人数组对象,oldPersonObj 中的联系人数组对象也会被删除。

为什么会这样?有什么方法可以将数据复制到临时对象中而不影响数据库?

【问题讨论】:

    标签: objective-c realm


    【解决方案1】:

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

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

    【讨论】:

    • 即使我复制了单个项目,当原始项目更改时,复制的对象也会更改!以某种方式连接所有领域对象!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多