Cocoa touch 带进程的UITableView加载缓存数据-显示表-加载新数据-刷新表

Cocoa touch 带进程的UITableView加载缓存数据-显示表-加载新数据-刷新表,cocoa-touch,uitableview,caching,refresh,reloaddata,Cocoa Touch,Uitableview,Caching,Refresh,Reloaddata,我有一个tableview,它由我下载的大量数据组成,为此,需要一些时间才能显示表(一两秒钟)。所以我开始做的是在本地缓存数据,现在当视图显示时,它几乎立即显示出来——非常好 问题是,我想获得一组干净的数据,然后刷新表视图 1) UI被阻止,因此缓存的数据永远不会显示 2) 我担心在“重新加载数据”时覆盖缓存数据会导致问题。您似乎无法可靠地测试是否显示了表(因为从技术上讲,它永远不会完成) 我是这样做的 -(void)updateInfo [arrayOfItems removeAllO

我有一个tableview,它由我下载的大量数据组成,为此,需要一些时间才能显示表(一两秒钟)。所以我开始做的是在本地缓存数据,现在当视图显示时,它几乎立即显示出来——非常好

问题是,我想获得一组干净的数据,然后刷新表视图

1) UI被阻止,因此缓存的数据永远不会显示

2) 我担心在“重新加载数据”时覆盖缓存数据会导致问题。您似乎无法可靠地测试是否显示了表(因为从技术上讲,它永远不会完成)

我是这样做的

-(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];应该调用替换数组中项目的其他内容,而不是清除它