2012-09-11 41 views
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]; 
} 

...表視圖不會更新與新的數據,直到我重新啓動應用程序。

任何想法?

+1

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

+0

我覺得那樣做了!非常感謝,把它寫成答案,我會接受它:) – bmueller

回答

0

Prasad得到了這個正確的 - 我正在刪除整個緩存目錄,而不是單個文件。