NSFetchedResultsControllerとCoreDataでいくつかの厄介な問題が発生しています。いずれも、助けを得ることができて非常にありがたいです。
問題1-更新:バックグラウンドスレッドでストアを更新すると、特定の行が削除、挿入、または更新されます。変更は、「mergeChangesFromContextDidSaveNotification:」メソッドを使用してメインスレッドのコンテキストにマージされます。挿入と削除は適切に更新されますが、更新は更新されません(たとえば、セルラベルは変更によって更新されません)。ただし、挿入と削除とまったく同じように、contextDidSaveNotifcationを介して更新が行われることを確認しました。私の現在の回避策は、コンテキストの失効間隔を一時的に0に変更することですが、これは理想的な解決策ではないようです。
問題2-オブジェクトの削除:フェッチバッチサイズは20です。最初の20行にあるバックグラウンドスレッドによってオブジェクトが削除された場合、すべてが正常に機能します。ただし、オブジェクトが最初の20行の後にあり、テーブルが下にスクロールされると、「CoreDataは障害を実行できませんでした」というエラーが発生します。コンテキストを再保存し、frcフェッチを再実行しようとしましたが、まったく役に立ちませんでした。注:このシナリオでは、frcデリゲートメソッド「didChangeObject ....」は削除のために呼び出されません。これは、問題のオブジェクトがその時点で障害が発生していなかったためであると考えられます(初期フェッチ範囲外であったため)。 )。しかし、何らかの理由で、コンテキストはオブジェクトが存在すると見なしますが、はストアから削除されています。
問題3-セクションの削除:行を削除するとセクションが削除される場合、「セクション内の行数が無効ですか?」というメッセージが表示されます。エラー。NSFetchedResultsChangeMove:セクションから「reloadSection」行を削除して「[tableViewinsertRowsAtIndexPaths ....」に置き換えることでこれを回避しました。これは機能しているようですが、これが最善の解決策かどうかはわかりません。
どんな助けでも大歓迎です。ありがとうございました!