はここに私のセットアップませんがありますにもかかわらず、変更を報告します。データは、後でRealm DBに追加される領域オブジェクトに解析されます。結果に何らかの変更が生じた場合に通知する通知ブロックをセットアップしました。さて、フェッチされたオブジェクトが既にDBに書き込まれたオブジェクトと同一であっても、RealmCollectionChange
は、すべてのオブジェクトが変更されたかのようにレポートします。RealmCollectionChangeはどれも
フェッチ/解析:
realmDB.beginWrite()
for projectJSON in projectsArray {
let project = createObjectFromJson(projectJSON)
realmDB.add(project, update: true)
}
realmDB.commitWrite()
変更オブザーバー:ここでは、サンプルコードです
notificationToken = projects.addNotificationBlock { changes in
switch changes {
case .Update(_, let deletions, let insertions, let modifications):
...
}
だからここにすべてのオブジェクトが更新されているかのように、変更は常に、インデックスの完全なリストを返します。
これは期待ですか?そのような行動を避ける方法はありますか? add:update
は、オブジェクトが同じであれば更新をスキップするのではなく、更新を強制します。
これは正しいです。同じ値であってもプロパティを変更すると、通知の変更として登録されます。これは、オブジェクトが書き込みトランザクションによって接触されたときにUIが常に更新されるようにするためです。これがアプリケーションの実装と衝突する特定のユースケースがある場合は、Realm Cocoaレポで問題を提出してください:https://github.com/realm/realm-cocoa/issues – TiM