iOSアプリでは、アプリが読み込まれるときにWebサービスにアクセスして、Core Data DB内のさまざまなテーブル(エンティティ)の更新を確認しています。
これはバックグラウンドスレッドで行うので、ユーザーは引き続きアプリを操作できます
私が抱えている問題は、Core Dataからアクセスするエンティティのテーブルを含むビューを読み込もうとすると、アプリが応答しなくなり、バックグラウンドの更新が完了するまで遅れます。
たとえば、バックグラウンドで「タスク」を更新しているときにタッチして「タスク」のテーブルを表示した場合、ラグのないエクスペリエンスを実現できますか?
MagicalRecordを使用していて、saveInBackgroundWithBlock
ブロック内で作成/更新を実行しています
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){
//UserTasks
if([viewName isEqualToString:[[NSString stringWithFormat:@"UserTask_vw_iSales"] lowercaseString]])
{
//returns a UserTask or nil if one does not exist
UserTask *oldUserTask = [UserTask doesExist:[record valueForKey:@"JSONData"]];
if(oldUserTask)
{
NSLog(@"deleting old UserTask");
[UserTask MR_deleteAllMatchingPredicate:[NSPredicate predicateWithFormat:@"userTaskUID == %@", oldUserTask.userTaskUID] inContext:localContext];
}
//create new one
UserTask *utt = [UserTask MR_createInContext:localContext];
[utt initWithJSONSting:[record valueForKey:@"JSONData"]];
NSLog(@"Creating UserTaskType: %@", utt.userTaskUID);
}
}];
助けてくれてありがとう!