1
我的應用程序有一個表格視圖,它從XML文件加載數據並緩存這些數據。現在,表格可以在更新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];
}
...表視圖不會更新與新的數據,直到我重新啓動應用程序。
任何想法?
0123在你的第二種方法,我認爲你完全刪除緩存目錄insted這樣做刪除indivisual文件NSFileManager * fileMgr = [NSFileManager defaultManager]; NSArray * fileArray = [fileMgr contentsOfDirectoryAtPath:cachepath error:nil]; for(NSString * filename in fileArray){ [fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL]; } – prasad
我覺得那樣做了!非常感謝,把它寫成答案,我會接受它:) – bmueller