我正在构建一个新闻应用程序(TabBar应用程序),在这里我必须将来自rss提要的最新新闻加载到UITableView中。我已经做到了,但是我现在面临的问题有两个方面:
-启动时,表格视图保持灰色(没有数据,但应用程序响应),直到我切换到其他选项卡项并返回以查看加载的数据。我想这与收集数据的延迟有关吗?但是我已经看到一些应用程序,例如pulse可以很快收集数据。我怎样才能做到这一点?以及如何避免在收集数据之前显示空白的灰色视图。顺便说一句,Web服务的响应速度非常快而且重量也很轻。
-再次提及脉冲应用程序的工作方式,我如何缓存以前的数据,以便每次启动该应用程序时,无需刷新新数据,直到用户刷新?
一些代码示例确实有帮助。我尝试研究URLCache示例,但老实说那让我很困惑。谢谢!
最佳答案
在我看来,检索数据后您不会重新加载表数据。加载rss feed后,只需添加[myTableVariable reloadData];
。
要在不同应用程序运行之间缓存数据,可以将其保存到documents文件夹中的文件中,并在启动时读取。使用缓存的数据,直到检索到新数据。您可以修改以下代码
- (BOOL)SaveData
{
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingString:@"/cache.dat"];
NSArray *userInfo = [NSArray arrayWithObjects:@"Apples", @"Bananas", @"Oranges", nil];
BOOL saved = [NSKeyedArchiver archiveRootObject:userInfo toFile:path];
return saved;
}
- (NSArray *)LoadData
{
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingString:@"/cache.dat"];
NSArray *userInfo = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
return userInfo;
}
希望这可以帮助