从块内更新Realm对象

时间:2016-04-15 23:37:57

标签: ios objective-c realm

我有一个应用程序,用户可以拍照,保存并上传到数据库。电话看起来像这样:

- (void)saveImage {
    // Create object
    Image *img = [[Image alloc] init];
    img.data = self.imageData;

    // Get the default Realm
    RLMRealm *realm = [RLMRealm defaultRealm];

    // Add to Realm with transaction
    [realm beginWriteTransaction];
    [realm addObject:img];
    [realm commitWriteTransaction];

    [self.client uploadImages:@[self.jpeg] completion:^(NSDictionary *response, NSError *error) {
        if (error) {
            NSLog(@"Error: %@", error);
        } else {
            [realm beginWriteTransaction];
            img.uploaded = @YES;
            [realm commitWriteTransaction];
        }
    }];
}

如果我在另一个视图控制器中有Image个对象数组RLMResults<Image *> *imgs = [Image allObjects];,那么当该块返回时,Realm会自动更新图像吗?或者我是否需要再进行一次查询来更新它?

1 个答案:

答案 0 :(得分:0)

  

在另一个视图控制器中,当该块返回时,Realm会自动更新图像吗?

是的,如果在其他线程中提交事务,则会自动更新Realm对象。

文档在这里:https://realm.io/docs/objc/latest/#auto-updating-objects

可能会延迟,因为更改将反映在每个运行循环中。跟踪更改的最佳做法是,您应订阅Realm notifications以了解对象中的Realm数据何时更新,以指示应何时刷新应用的UI。