2017-03-02 9 views
0

変更が全体のクエリ結果に影響を与えない場合、コレクション通知ブロックが変更のために起動しないレルムObjective-C v2.4.3の問題が発生しました。レルム収集通知がクエリに影響を与えない更新のために起動しない

簡略化した例を示します。

FeedオブジェクトとFeedItemオブジェクトです。フィードにはitems RLMArrayプロパティがあります。

RLMArray<FeedItem *><FeedItem> *items 

私はクエリがあるRLMResults用に設定収集通知ブロックを持っている:私は0からステータスプロパティを変更する場合

[Feed objectsWhere:@"ANY items.status > 0"] 

挿入変更が発生します - 削除はI場合は同じように> 1。クエリの上限があり、それがそこから外れました。ただし、FeedItemのstatusプロパティーを変更しても(たとえば、1 - > 2に変更するなど)クエリに一致し続けると、この変更によって全体的なクエリ結果が影響を受けないため、通知変更ブロックがトリガーされません。

この変更は、コレクションドキュメントに記載されている変更の対象になると思いますか?

  • あなたは以前にコレクションの一部だったとまだそれの 一部であるオブジェクト のプロパティが変更されたときはいつでも変更、について通知しています。

  • あなたはその人に属する犬の年齢プロパティを変更します。

  • これは、離散的にアニメーションや、あなたのUIの内側、代わりに 任意すべてに通知が発生するたびにリロードの内容に行われた 視覚的な更新を制御することが可能となります。

アムは、私が働いて、この機能を取得するには何かが足りませんか? CollectionViewのデータソースはRLMResultsであり、個々のCollectionViewCellをリロードして、FeedItemのステータスへの更新を反映させたいと思います。

+0

にコメントしてきた既存の2つのレルムgithubの問題を発見しました。私たちのGitHub号トラッカー(https://github.com/realm/realm-cocoa/issues)でチケットを発行したり、この問題を再現するデモプロジェクトを[email protected]に送ったりしますか? – AustinZ

+1

ありがとう@AustinZ。私は2つの既存の問題についてコメントしました。 https://github.com/realm/realm-cocoa/issues/4305#issuecomment-283688989とhttps://github.com/realm/realm-cocoa/issues/3885#issuecomment-283274197 –

+0

優秀!以前の人に気付かなかったことに対する謝罪。 – AustinZ

答えて

0

その間に、私はlastModifiedプロパティをFeedに追加し、逆の関係を使用して最後に更新したFeedItemを変更するとこの問題を解決しました。

self.feed.lastModified = [NSDate date];

ないように素晴らしいが、それは私が後だったもので、コレクションの通知で変更の変更が発生します。

これを達成するためのより良い方法がある別の回答を受け入れることを幸せにしてください。

はまた、私はこれは、レルムのバグのように思える

https://github.com/realm/realm-cocoa/issues/4305#issuecomment-283688989

https://github.com/realm/realm-cocoa/issues/3885#issuecomment-283274197

関連する問題