在标签栏上加载核心数据的替代方案确实选择项目?或者加快速度



我正在为didSelectItem上的TableView加载核心数据,但这会使选项卡栏感觉迟钝,直到新数据加载后才会更新。解决此问题的好方法是什么?我可以在数据加载之前更新选项卡栏和空白表视图,还是以某种方式显示活动指示器?

这是我当前的代码

- (void) tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSInteger index = [item tag];
NSMutableArray *schedule = [dataHandler fetchEntriesForCourse:[[_Courses objectAtIndex:index] valueForKey:@"CourseCode"]];
tableView.schedule = schedule;
}

您可以使用 GCD 在后台线程中进行提取,并在数据出现时填充表视图。这是一篇关于在后台线程中使用核心数据的好文章。

http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/

实际上,如果您使用 fetchresultscontroller 捕获数据,您需要做的就是在另一个线程中进行获取。然后,随着获取的进行,它将自动捕获添加新行。

我最终制作了一个 NSMutableArray 来在应用程序启动时存储数据,因此选项卡更改得更快,因为它不必获取核心数据。

最新更新