1

我的应用程序有一个表格视图,它从 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];
} 

...在我重新启动应用程序之前,表格视图不会使用新数据进行更新。

有任何想法吗?

4

1 回答 1

0

Prasad 是正确的——我删除的是整个缓存目录而不是单个文件。

于 2012-09-21T18:10:15.990 回答