Запись данных в виде XML в приложении - PullRequest
1 голос
/ 20 августа 2009

Какой хороший способ архивировать данные из класса в XML и записать их в файл? (в Objective-C для iPhone SDK)

Я вижу много об использовании NSXMLParser для разбора данных, но не много при создании файлов.

1 Ответ

2 голосов
/ 20 августа 2009

Поскольку вы запросили самый простой способ ... если вы можете получить данные в массив или словарь, вы можете записать их в виде XML-списка с одной строкой кода:

NSMutableDictionary* data = [NSMutableDictionary 
                            dictionaryWithContentsOfFile:saveDataPath];

[data writeToFile:saveDataPath atomically:YES];

Словари и массивы могут содержать другие словари и массивы в качестве значений, которые помогают моделировать вложенные иерархии.

Поскольку вы можете писать только в папку «Документы» во время выполнения, вам нужно, чтобы что-то вроде этого устанавливало путь:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString* saveDataPath = [documentsDirectory 
                          stringByAppendingPathComponent:SAVEFILENAME];

Для пользовательской сортировки объектов вам понадобится NSCoding и архивы. Большинство XML-библиотек не поддерживают генерацию, поэтому вам придется создавать свои собственные.

Другой вариант - пойти по пути CoreData и позволить ему позаботиться о чтении и письме за вас. Но в настоящее время он поддерживает постоянные хранилища SQLite, двоичные файлы и в памяти, так что пока нет никакого XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...