NSFetchedResultsControllerとDATAStackを使用しています。私のNSFetchedResultsControllerは、別のコンテキストで何らかの変更を加えた場合、テーブルを更新しません。NSFetchedResultsControllerがバックグラウンドコンテキスト(DATAStack)から更新されない
NSFetchedResultsControllerにdataStack.mainContext
を使用します。もし私がmainContextから何らかの更新をしても大丈夫です。しかし、私がそのようなコードを書いた場合:
dataStack.performInNewBackgroundContext({ (backgroundContext) in
// Get again NSManagedObject in correct context,
// original self.task now in main context
let backTask = backgroundContext.objectWithID(self.task.objectID) as! CTask
backTask.completed = true
let _ = try? backgroundContext.save()
})
NSFetchedResultsControllerはセルを更新しません。アプリケーションや全体ビューをリロードすると、更新されたデータが表示されます。
データの保存にエラーはありません(確認済み)。
NSManagedObjectContextDidSaveNotificationが受信されたことを確認しようとしましたが、通知が受信された後に.performFetch()を実行すると、再びテーブルの古いデータが取得されます。
NSFetchedResultsControllerのこのタイプのバグは、私たちが良い選択肢を望んでいたことを喜ばしく思います。 – 3lvis