アプリがバックグラウンド モードになったときに、アプリが JSON オブジェクトをダウンロードしています。アプリはそれらをコア データ エンティティに変換します。私が実行している問題は、これらのコア データ エンティティの管理オブジェクト コンテキストをメインの管理オブジェクト コンテキストとマージする必要があることです。
これらの変更をマージする方法は、通知を使用することです。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextHasChanged:) name:NSManagedObjectContextDidSaveNotification object:nil];
- (void)contextHasChanged:(NSNotification*)notification
{
NSLog(@"received notification with object: %@",[[notification object] description]);
if ([notification object] == [AppUser managedObjectContext]) return;
if (![NSThread isMainThread]) {
[self performSelectorOnMainThread:@selector(contextHasChanged:) withObject:notification waitUntilDone:YES];
return;
}
[[AppUser managedObjectContext] mergeChangesFromContextDidSaveNotification:notification];
}
何らかの理由で、バックグラウンドでの実行中にコードがこれらの通知を受け取りません。バックグラウンド モードで実行されている間、アプリは引き続き通知を生成しますか? それとも、そのような通知に登録する場所/時期の場所が間違っているのでしょうか?
明確にしていただきありがとうございます!