我的应用正在获取JSON数据的提要,代表数以千计的产品数据。在CoreData中解析并保存数据后(全部在后台线程中),在解析完UI之后在UITableView
中显示数据,因为它在主线程中完成。但问题在于用户界面仍然被阻塞了几秒钟,这不是用户友好的。那么你如何建议我可以在不阻止UI的情况下处理重新加载数据?在不阻挡用户界面的情况下在UITableView中重新加载数据
//...
//After parsing data, reload UITableView
[self.tView reloadData];
编辑:
我可以重新解释我的问题,解析数据,重装数据,UITableView
对象显示所有数据之后。然后,在我终于可以再次使用该应用程序之前,UI会被阻止几秒钟。
这里是我的相关代码:
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON){
//Parse data
[self.tView reloadData];//Display data
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
//Save data
}];
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response,NSError *error, id JSON){
//
}];
[operation start];
}
是否需要花费几秒钟的时间来调用'reloadData'本身? – Isaac
实际上,在将数据显示到'UITableView'后,UI被阻塞了几秒钟 – Malloc
另外,您的视图控制器是使用NSFetchedResultsController还是手动获取对象并将它们存储在数组中?第二个问题,你说你的数据处理是在后台线程中处理的。这是否意味着您的所有更改都是在子环境中完成的?并且您的持久性存储协调器也链接到主线程或后台线程中的上下文。如果它在主线程中,实际保存到磁盘可能会阻止你的UI – mrosales