无法一致地更新Realm中的嵌套对象

时间:2016-11-16 18:23:34

标签: objective-c realm

我试图在嵌套对象中进行一些简单的更新,并且我注意到它不会一直发生。

假设假设涉及以下类:

@interface Dog : RLMObject
@property NSString *name;
@property NSData   *picture;
@property NSInteger age;
@end

@interface Person : RLMObject
@property NSString             *name;
@property RLMArray<Dog *><Dog> *dogs;
@end

如果服务器通过了一个带有更新狗名的Person对象,目前我只会这样做(在Psuedocode中)

for (Dog *dog in person.dogs)
{
     dog.name = updatedDogName;
}

[defaultRealm beginWriteTransaction];
[defaultRealm addOrUpdateObject:person];
[defaultRealm commitWriteTransaction];

假设:
 1)人和各自的Dog对象具有唯一的主键
 2)Person和相应的Dog对象已经存在于DB中,我只是通过Person对象更新Dog对象。

我在这里做错了吗?我注意到更新只发生了大约一半的时间。

1 个答案:

答案 0 :(得分:0)

问题源于调用writeCopyToURL,而正在使用附加了Realm实例的对象(例如person.realm != nil)。更自由地使用自动释放池试图减少这种情况发生的可能性。