私のアプリには、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];
}
...アプリを再起動するまで、テーブルビューは新しいデータで更新されません。
何か案は?