メインのマネージド オブジェクト コンテキストに関連付けられた NSFetchedResultsController があります。私のメインビューでテーブルビューのデータを保持することを担当しています。
フェッチされた結果コントローラーが追跡している管理対象オブジェクトを更新/削除するバックグラウンド スレッドで NSOperation を実行しています。nsoperation で子コンテキスト (プライベート コンカレンシー タイプ / 親 = メインのマネージド オブジェクト コンテキスト) を作成し、オブジェクトを挿入/削除します。完了すると、そのコンテキストと親コンテキストが保存されます。
興味深いのは、これが iOS 6 で正常に機能することです。オブジェクトを挿入または削除すると、取得した結果のコントローラーに変更が通知され、すべてが期待どおりに機能します。ただし、iOS 5 では、削除以外はすべて機能します。フェッチされた結果のコントローラーには、削除が通知されません。ただし...フェッチされた結果コントローラーを手動で更新すると(nilにして同じ述語を再フェッチすると)、期待される結果が表示されます。
また、メイン コンテキストで変更/保存通知を登録すると、ユーザー情報ディクショナリに、削除したオブジェクトが含まれていることがわかります... iOS 5 でも!
私がそうかもしれないと思った問題の 1 つは、要素を削除したため、このオブジェクトが別のオブジェクトと多対 1 の関係にあることです。削除/挿入するオブジェクトは「従業員」であり、「部門」と関係があります。従業員は無効に設定され、部門はカスケードに設定されます。
前述したように、これは iOS6 では問題なく機能しますが、iOS5 では機能しません。
どんなヒントでも非常に役に立ちます。