Как я могу локально сохранить файл XML на iPhone, когда устройство находится в автономном режиме? - PullRequest
2 голосов
/ 18 февраля 2010

Мое приложение обращается к данным из удаленного файла XML. У меня нет проблем с получением и анализом данных. Тем не менее, я хотел бы взять самые последние данные XML и сохранить их локально, так что в случае, если интернет-служба пользователя недоступна, используются локальные данные из предыдущей загрузки.

Есть ли простой способ сделать это? Или мне придется создать алгоритм, который будет создавать plist, когда данные XML анализируются? Это кажется довольно утомительным ... Мне было интересно, есть ли более простой способ сохранить данные в целом.

Заранее спасибо!

1 Ответ

9 голосов
/ 18 февраля 2010

Я не знаю, в каком формате находятся ваши XML-данные, когда вы их получаете, но здесь может быть полезно использовать NSData, потому что он имеет очень простые в использовании методы для чтения / записи данных с URL-адреса или пути .

Например:

NSURL *url = [NSURL URLWithString:@"http://www.fubar.com/sample.xml"];
NSData *data = [NSData dataWithContentsOfURL:url];  // Load XML data from web

// construct path within our documents directory
NSString *applicationDocumentsDir = 
   [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"sample.xml"];

// write to file atomically (using temp file)
[data writeToFile:storePath atomically:TRUE];

Вы также можете легко преобразовать объект NSData в / из необработанного буфера (указатель / длина) в памяти, поэтому, если ваши данные уже загружены, вы можете сделать:

    NSData *data = [NSData dataWithBytes:ptr length:len];   // Load XML data from memory
    //  ... continue as above, to write the NSData object to file in Documents dir
...