在Realm中更新对象

mle*_*evi 8 realm ios

我究竟如何更新Realm中的对象?似乎无法找到编辑/更新对象的任何内容.有任何想法吗?谢谢

Jay*_*mon 4

这是有关更新 Realm 中对象的文档

这是更新对象的另一种选择,而不是其他答案中讨论的选择。

很多时候,当我想要更新对象时,我只需要更新一两个属性,Realm 的一件烦人的事情是持久化对象的属性更改需要包装在写事务中,所以我通常添加一个包装器我的对象的方法来稍微清理一下界面:

@implementation SomeRealmClass

    - (void)update:(void (^)(SomeRealmClass *instance))updateBlock
    {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
            RLMRealm *realm = [RLMRealm defaultRealm];
            [realm beginWriteTransaction];
            updateBlock(self);
            [realm commitWriteTransaction];

        });
    }

@end
Run Code Online (Sandbox Code Playgroud)

这样,我可以像这样更新对象:

SomeRealmClass *instance = [[SomeRealmClass allObjects] objectAtIndex:0];

[instance update:^(SomeRealmClass *instance) {
    instance.foo = @"foo 2";
    instance.bar = @"bar 2";
}];
Run Code Online (Sandbox Code Playgroud)