NSFetchedResultsControllerで奇妙な動作が発生しています。これはiOS 10で新しく追加された点です。fetchedObjects
には重複したオブジェクトが含まれています。NSFetchedResultsControllerが重複を返します(同じobjectIDと参照)
これは、私自身の基準では「重複」を意味するものではありません。彼らは文字どおり同じobjectIDと同じ参照を持っています。
それは私のアプリで起こるどのよう:
FRCがセットアップされ、実行さ
2オブジェクト(この例では)フェッチされるフェッチ
何かが私の同期層で起こります、別のオブジェクト(アイテムとの関係にあるもの)が更新されます
FRCがcont entは変わった。
fetchedObjects
は4つのオブジェクト(2つの重複)
が含まれています。ここcontrollerDidChangeContent
方法で私のデバッグからのコンソール出力です。
po frc.fetchedObjects
- 0 : <ListItem: 0x1700dc3f0> (entity: ListItem; id: 0x1706294a0 <x-coredata://12D0CB00-7BF4-402A-8371-19DD1CFB1537/ListItem/t3384FC2D-3399-41FE-B7DD-C277922F495445> ; data: { ... }
- 1 : <ListItem: 0x1700dc3f0> (entity: ListItem; id: 0x1706294a0 <x-coredata://12D0CB00-7BF4-402A-8371-19DD1CFB1537/ListItem/t3384FC2D-3399-41FE-B7DD-C277922F495445> ; data: { ... }
- 2 : <ListItem: 0x1704c49f0> (entity: ListItem; id: 0x170631680 <x-coredata://12D0CB00-7BF4-402A-8371-19DD1CFB1537/ListItem/t3384FC2D-3399-41FE-B7DD-C277922F495446> ; data: { ... }
- 3 : <ListItem: 0x1704c49f0> (entity: ListItem; id: 0x170631680 <x-coredata://12D0CB00-7BF4-402A-8371-19DD1CFB1537/ListItem/t3384FC2D-3399-41FE-B7DD-C277922F495446> ; data: { ... }
(lldb) po frc.fetchedObjects![0].objectID.isEqual(frc.fetchedObjects![1].objectID)
true
もう1つの注意:FRCを再作成してオブジェクトを再度フェッチすると、重複はありません。
この問題の原因は何もわかりません。私はそのバグを引き起こしている私のアプリで何か間違っているかもしれない。とにかくFRCが重複したオブジェクトをfetchedObjects
に許しているのは本当に変です。 私はそれをどのようにデバッグすべきか私に何か手がかりを与えてもらえますか?
私は重複が唯一のいくつかのオブジェクトへの変更後にビューの1)の後に現れ、および2)変更がデータベースに反映されていないので、何かがあなたのFRC didChangeデリゲート関数でオフになっている疑いがあると思います。私は、.insertと.moveのケースをAppleの提案コードと比較することに焦点を当てるが、それでも問題がなければ他のコードをチェックすることにしている。私がXcodeベータ版に行ってからしばらくしてきましたが、いくつかのパラメータでAnyObjectからAnyへの切り替え以外の変更は覚えていませんが、バージョン7が気にしていないものには敏感かもしれません。 –