Cocoa touch 带进程的UITableView加载缓存数据-显示表-加载新数据-刷新表
我有一个tableview,它由我下载的大量数据组成,为此,需要一些时间才能显示表(一两秒钟)。所以我开始做的是在本地缓存数据,现在当视图显示时,它几乎立即显示出来——非常好 问题是,我想获得一组干净的数据,然后刷新表视图 1) UI被阻止,因此缓存的数据永远不会显示 2) 我担心在“重新加载数据”时覆盖缓存数据会导致问题。您似乎无法可靠地测试是否显示了表(因为从技术上讲,它永远不会完成) 我是这样做的Cocoa touch 带进程的UITableView加载缓存数据-显示表-加载新数据-刷新表,cocoa-touch,uitableview,caching,refresh,reloaddata,Cocoa Touch,Uitableview,Caching,Refresh,Reloaddata,我有一个tableview,它由我下载的大量数据组成,为此,需要一些时间才能显示表(一两秒钟)。所以我开始做的是在本地缓存数据,现在当视图显示时,它几乎立即显示出来——非常好 问题是,我想获得一组干净的数据,然后刷新表视图 1) UI被阻止,因此缓存的数据永远不会显示 2) 我担心在“重新加载数据”时覆盖缓存数据会导致问题。您似乎无法可靠地测试是否显示了表(因为从技术上讲,它永远不会完成) 我是这样做的 -(void)updateInfo [arrayOfItems removeAllO
-(void)updateInfo
[arrayOfItems removeAllObjects];
[self loadItems:useCached];
[itemTable reloadData];
if(useCached)
{
NSLog(@"Cached data Displayed, now updating");
useCached = NO;
[self updateInfo];
}
}
我想知道我的整个方法是否是错误的——关于什么是最佳实践的任何想法
对于问题1,我认为这是一个主线程问题,但是,上面的代码在后台运行,据我所知,重载数据是在主线程上完成的,但它不会绘制。强迫它进入主流似乎也无济于事
对于问题2,我开始认为行[self updateInfo];应该调用替换数组中项目的其他内容,而不是清除它