我有一个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];应该调用其他替换我的数组中的项而不是清除它的东西。