0

私は2つのNSManagedObjectContext年代には、1がバックグラウンドでAPIレスポンスからのデータを書き込むために使用される必要があり、他方は、次のようにNSFetchedResultsControllerを移入することです:一過性に格納されているオブジェクトがあります 保存されていないNSManagedObjectContextの変更をあるコンテキストから別のコンテキストにマージするにはどうすればよいですか?

// moc used to fetch objects via NSFetchedResultsController: 

    moc = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) 
      moc.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy 


// moc used when writing data from an api response: 

    backgroundMoc = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType) 
      moc.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy 

バックグラウンドmoc( .save()と呼ぶことなく)、私の NSFetchedResultsControllerがそれにアクセスできるように、これらの変更をメインのmocにマージする必要があります。

私はNSManagedObjectContextDidSaveNotificationに加入しようとしたが、私は私のbackgroundMoc内のオブジェクトが保存されていない変更を持っているので、私は、避けるためにしようとしていますbackgroundMoc.save()を呼び出す場合にのみヒットされることを。

どうすればよいですか?

答えて

0

これのためのメカニズムはありません。あるコンテキストで変更を保存していない場合、その変更はそのコンテキストにのみ存在します。他のコンテキストはそれらを見ることができないので、そのコンテキストに含まれている情報を取得することはできません。変更を保存したくない場合、唯一の選択肢は、他のコンテキストで同じ変更をもう一度行うことです。つまり、コンテキストAで何をしたとしても、コンテキストBで同じことをやり直してください。

関連する問題