我的应用程序有一个表视图,可以从XML文件加载数据并缓存此数据。现在,该表可以在XML文件更新时添加新的部分,但是我无法确定如何同时删除/覆盖表的最旧部分。
这是表视图控制器文件的fetchEntries
部分:
- (void)fetchEntries {
// Initiate the request...
NSURL *url = [NSURL URLWithString:@"http://www.test.com"];
channel = [[FeedStore sharedStore] fetchRSSFeedWithURL:url completion:
^(RSSChannel *obj, NSError *err) {
if(!err) {
// How many items are there currently?
int currentItemCount = [[channel items] count];
// Set our channel to the merged one
channel = obj;
// How many items are there now?
int newItemCount = [[channel items] count];
// For each new item, insert a new row.
int itemDelta = newItemCount - currentItemCount;
if(itemDelta > 0) {
NSMutableIndexSet *stuff = [NSMutableIndexSet indexSet];
for(int i = 0; i < itemDelta; i++)
[stuff addIndex:i];
[[self tableView] insertSections:stuff withRowAnimation:UITableViewRowAnimationNone];
}
}
}];
[[self tableView] reloadData];
}
另一种选择是检查版本号,如果XML已更新,则完全删除缓存和表,然后重新加载数据。但是当我这样称呼时:
- (void)deleteCache {
NSString *cachePath =
[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask,
YES) objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:cachePath error:NULL];
[[channel items] removeAllObjects];
[self fetchEntries];
}
...在重新启动应用程序之前,表视图不会使用新数据进行更新。
有什么想法吗?
答案 0 :(得分:0)
Prasad说得对 - 我正在删除整个缓存目录而不是单个文件。