1

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);
        }
 }]; 

助けてくれてありがとう!

4

1 に答える 1

0

探していた動作を取得するためにMagicalRecordを使用しなかったのです-私はこの投稿に従いました:

https://stackoverflow.com/a/11814957/480415

これで、バックグラウンドでエンティティを更新している間、UIがロックされません。

于 2013-01-08T15:14:59.953 に答える