Как кэшировать списки XML, загруженные с сервера? - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь выяснить, как кэшировать список комических заголовков, которые я хочу использовать в uitableview, и будет обновляться примерно каждую неделю, поэтому вместо загрузки списка каждый раз, когда приложение запускается из Интернета,сервер, который я хочу сохранить в кеше ... единственная проблема в том, что мне трудно найти документацию для списков кэширования, подобных этому.

Любой пример кода или предложения будут очень благодарны:)

1 Ответ

2 голосов
/ 13 мая 2011
  1. Вы извлекаете XML
  2. Вы анализируете его в NSDictionary с помощью NSXMLParser
  3. Сериализуете и сохраняете словарь.

@implementation NSDictionary(BinaryPlist)
- (BOOL)writeToBinaryFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile {
    NSString *errorString = nil;
    NSData *data = [NSPropertyListSerialization dataFromPropertyList:self format:NSPropertyListBinaryFormat_v1_0
                                                    errorDescription:&errorString];
    if (errorString) {
        return NO;
    }

    return [data writeToFile:path atomically:useAuxiliaryFile];
}
@end
  1. Затем вы можете определить, как долго вы должны считать кэш свежим, или, альтернативно, выполнить запрос HTTP HEAD и проверить заголовок Last-Modified.

- (BOOL)cacheValid:(NSString*)path {
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error = nil;
    NSDictionary *attrs = [fileManager attributesOfItemAtPath:path error:&error];
    if (!error) {
        NSDate *modDate = [attrs fileModificationDate];
        NSTimeInterval delta = - [modDate timeIntervalSinceNow];
        if (delta < kCacheTTL) {
            return YES;
        }
    }
    return NO;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...