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];

}

もう1つのオプションは、バージョン番号を確認し、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 に答える