1

在我的 iOS 应用程序中,当应用程序加载以检查我的核心数据数据库中各种表(实体)的更新时,我正在访问一个 Web 服务。

我在后台线程中执行此操作,因此用户仍然可以与应用程序交互

我遇到的问题是,当我尝试加载包含我从 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 回答