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

时间:2014-02-18 14:15:33

标签: cocoa-touch uitableview caching refresh reloaddata

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

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

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

2)我担心在“reloadData”发生时覆盖缓存的数据会导致问题。看起来你无法可靠地测试是否已经显示了一个表(从技术上来说它永远不会完成)。

我是这样做的;

-(void)updateInfo
    [arrayOfItems removeAllObjects]; 
    [self loadItems:useCached];
    [itemTable reloadData];
    if(useCached)
    {
        NSLog(@"Cached data Displayed, now updating");
        useCached = NO;

        [self updateInfo];
    }
}

我想知道我的整个方法是否不正确 - 关于什么是最佳实践的任何想法。

对于问题1我认为这是一个主线程问题,但是,上面的代码在后台运行,据我所知,reloadData在main上完成,但它没有绘制。迫使它成为主要的似乎也没有帮助。

对于问题2我开始认为行[self updateInfo];应该调用其他替换我的数组中的项而不是清除它的东西。

0 个答案:

没有答案