2017-11-21 9 views
0

Postオブジェクトの変更をリッスンするためにこのようなコードを記述しました。iOS RealmがRLMObjectの変更を検出しました

notification = Post.allObjects(in: RLMRealm.encryptedRealm()! as! RLMRealm).addNotificationBlock({ (results, changes, error) in 
     let pred = NSPredicate(format: "tag == %@", self.postTag) 
     self.posts = CommonResult.objects(with: pred).sortedResults(usingKeyPath: "id", ascending: true) 

     if let _ = changes { 
      if (changes!.insertions.count > 0 || changes!.deletions.count > 0 || changes!.modifications.count > 0) { 
        self.tblListing.reloadData() 
      } 
     } 
    }) 

私のポストオブジェクトには、2つのプロパティがあります。 1つは 'rowHeight'で、もう1つは 'isLikeByMyself'です。

「isLikeByMyself」が変更された場合にのみ、テーブルビューを再読み込みします。どうすればいいですか?出来ますか?

答えて

0

少なくとも2つのオプションがあります。

多くのPostオブジェクトをお持ちでない場合は、それぞれにobject notificationsを登録することをお勧めします。オブジェクト通知は、どのプロパティがどのように変更されたかを示します。その情報を使用してテーブルビューを再読み込みできます。ただし、それぞれのPostオブジェクトに別々の通知を登録する必要があります。多くの場合は実用的ではない場合があります。

これは別の考えです。 ignoredブールプロパティをisLikeWasChangedというようなPostに追加し、isLikeWasChangedtrueに変更すると、いつでもisLikeByMyselfを変更するSwift didSetブロックを追加します。次に、既存のコレクション観測ブロックで、少なくとも1つのisLikeWasChangedtrueの場合にのみテーブルビューをリロードします。ブロックを終了する前にすべてをfalseに設定することを忘れないでください。

関連する問題