私は2つのNSManagedObjectContext
を持っています:メインコンテキストであるparentContextと、PrivateQueueConcurrencyType
であるchildContextです。 childContextの使用バックグラウンドスレッドでサーバーにデータを同期していますが、同期が成功した後にdata.isSynced = true
と設定します。バックグラウンドスレッドでサーバにデータを同期する:コアデータ内のマルチコンテキスト
ユーザーは、同期中にデータを変更する可能性があります。これは、data.isSynced = false
を設定することによって、データをダーティとマークします。
parentContextがdata.isSynced == false
で、子コンテキストがdata.isSynced == true
の場合は、両方のスレッド(メインと同期)が同時に実行されていて、悪い状況が発生する可能性があります。 childContext.save()
を呼び出すと、parentContextの変更がオーバーライドされ、変更が失われ、更新されたデータがサーバーに再び同期されなくなります。
現在のデザインを改善するにはどうすればよいですか? 親コンテキストと子コンテキストの間のマージをカスタマイズする方法はありますか?