2016-04-15 6 views
0

私は、ユーザーが写真を撮って保存し、データベースにアップロードできるアプリケーションを持っています。私は、別のViewControllerにImageオブジェクト、RLMResults<Image *> *imgs = [Image allObjects];の配列を持っているイメージはときに、このブロックが戻るレルムによって自動的に更新されますブロック内からレルムオブジェクトを更新する

- (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]; 
     } 
    }]; 
} 

:呼び出しは次のようになりますか?または、それを更新するために別のクエリを実行する必要がありますか?

答えて

0

別のviewcontrollerで、このブロックが戻ったときにRealmによって画像が自動的に更新されますか?

はい、トランザクションが他のスレッド内でコミットされると、Realmオブジェクトは自動的に更新されます。

ドキュメントはこちらです:https://realm.io/docs/objc/latest/#auto-updating-objects

変更は、すべての実行ループを反映されますので、それは遅れて現われることがあります。変更を追跡するためのベストプラクティスとして、Realm notificationsに登録して、オブジェクトのRealmデータがいつ更新されるかを知って、アプリケーションのUIを更新する時期を知らせる必要があります。

関連する問題