在 tabBar didSelectItem 上加载核心数据的替代方法?还是加快速度?
Posted
技术标签:
【中文标题】在 tabBar didSelectItem 上加载核心数据的替代方法?还是加快速度?【英文标题】:Alternatives to loading core data on tabBar didSelectItem? Or speeding it up? 【发布时间】:2012-04-16 02:21:08 【问题描述】:我正在为 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;
【问题讨论】:
您不能通过响应者链捕获菜单请求吗?在 Mac OS X 上,我知道我会这样做。 你的课程被索引了吗?在正常情况下,这真的不应该花很长时间...... 是的,它只是一秒钟左右,但如果你不知道它的加载,它似乎标签卡住或真的很慢,它会触摸标签->加载数据->标签更改 【参考方案1】:您可以在后台线程中进行获取,使用 GCD 并在数据到来时填充表格视图。这是一篇关于在后台线程中使用 Core Data 的精彩文章。
http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/
真的,如果您使用 fetchresultscontroller 捕获数据,您需要做的就是在另一个线程中进行 fetch。然后它会在 fetch 继续时自动捕获添加的新行。
【讨论】:
【参考方案2】:我最终创建了一个 NSMutableArray 来在应用程序启动时存储数据,因此选项卡更改得更快,因为它不必获取核心数据。
【讨论】:
以上是关于在 tabBar didSelectItem 上加载核心数据的替代方法?还是加快速度?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 上设置第一个以编程方式选择的 TabBar
在Extjs 的 TabPanel在 title标题栏上加按扭button
(自动)在 tabbar1 中更新数组后,在 Tableview(tabbar2) 上重新加载数据(无需更改 tabbars)