2016-04-15 8 views
0

У меня есть приложение, в котором пользователь может сделать снимок, сохранить его и загрузить в базу данных. Вызов выглядит примерно так:Обновление объекта 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]; в другом ViewController, будет изображение будет обновляться автоматически Realm, когда этот блок возвращается? Или мне нужно сделать еще один запрос, чтобы его обновить?

ответ

0

в другом представлении контроля, будет ли изображение автоматически обновляться Realm, когда этот блок вернется?

Да, объекты Realm обновляются автоматически, если транзакции совершаются в других потоках.

Документация находится здесь: https://realm.io/docs/objc/latest/#auto-updating-objects

Это может быть отложено, потому что изменения будут отражаться на каждом цикле выполнения. Лучшая практика отслеживания изменений, вы должны подписаться на Realm notifications, чтобы знать, когда данные Realm в объекте обновляются, указывая, когда пользовательский интерфейс вашего приложения должен быть обновлен.

Смежные вопросы