私のアプリケーションでは、NSFetchResultController
を使用して、Core DataオブジェクトをUITableViewにロードしています。 このFRCに関連付けられたフェッチ要求は、NSPersistentContainer
(iOS10)で使用可能な新しいviewContext
プロパティを使用します。コアデータiOS10:NSFetchResultControllerでnewBackgroundContext()からの更新を受け取っていないviewContext
セルを選択すると、Core Dataオブジェクトを新しいViewControllerに渡します。この新しいVCは引き続きviewContextを使用します。 このViewControllerから、私たちはモーダルに表示されたViewControllerからCore Dataオブジェクトを更新できます。これを行うには、モーダルViewControllerにnewBackgroundContext()
を使用します。 Core Dataオブジェクトの更新は問題なく保存できます。
問題は、バックグラウンドコンテキストからFRCが更新コアデータオブジェクトで自動的に更新されないことです。 viewContextが受信しておらず、Core Dataオブジェクトの更新を処理していないかのようです。
viewContext(app wide)にautomaticallyMergesChangesFromParent
をtrueに設定した場合、FRCはバックグラウンドコンテキストを保存すると、更新されたCore Dataオブジェクトを取得します。私の理解から、viewContextはデータのマージを自動的に管理する必要があります。このドキュメントでは、次のようにviewContextについて説明しています。"このコンテキストは世代別に構成され、他のコンテキストからの保存通知を自動的に消費するように構成されています。
NSFetchResultControllerを使用してさまざまなコンテキストを処理する方法を明確にすることはできますか?
おかげで、 アクセル
ドキュメント(NSManagedObjectContext.h中).automaticallyMergesChangesFromParent用は言う:」コンテキストが自動的にそのコーディネータに保存された変更をマージするかどうかを判定または親のコンテキスト。コンテキストが非現在のクエリ生成に固定されている場合、このプロパティをYESに設定することはサポートされていません "というように、親が"店舗コーディネータ "の対象ではないケースのように見えます。.viewCoordinatorと.newBackgroundContextは同じストアコーディネータ –