Подтвердить что ты не робот

Каковы варианты сохранения данных в iOS?

Я хотел бы сериализовать кучу данных и сохранить их в файле, а затем загрузить его (естественно) и воспроизвести с помощью функции, которую я написал. (Извините, если моя терминология отключена, я начинаю с такого рода вещами.) Каков наилучший способ сделать это с iOS? От просмотра документации здесь:

Стандартное руководство по поведению приложений

Я собрал, что я должен использовать NSSearchPathForDirectoriesInDomains для поиска соответствующего корня каталога хранилища (Documents?), а затем используйте NSData для хранения этих буферов данных, которые я создаю и записываю их в файл. Я нахожусь с этим, или я ошибаюсь? Любой другой совет мудреца?

4b9b3361

Ответ 1

Вы можете использовать plist.
Очень легко сохранить список строк или других данных без использования основных данных.
См. Руководство по программированию списка свойств

Например, этот код сохранит объект (rootObj), который может быть массивом или словарем:

NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];
if(plistData) {
  [plistData writeToFile:plistPath atomically:YES];
}
else {
  NSLog(@"Error : %@",error);
  [error release];
}

Существует определенное ограничение на поддерживаемый класс (см. руководство)

Ответ 2

Это зависит от данных, которые вы пишете. Если вы в основном хотите сериализовать объекты, см. Протокол NSCoding. Если у вас есть простая структура данных, которая не является классом, вы можете сохранить ее в NSDictionary и сохранить в plist. И если у вас большой кусок данных (например, тысячи поплавков или что-то в этом роде), вы можете сохранить это с помощью NSData, как вы уже намекали. В любом случае обязательно прочитайте Руководство по программированию и сериализации архивов, чтобы вы не изобретали велосипед.

Ответ 3

Да, довольно правильное направление. Вам необходимо реализовать что-то, что называется протоколом NSCoding на вашем объекте, чтобы иметь возможность архивировать и разблокировать его в NSData. См. Пример: Сохранение файлов в iOS с помощью NSFileManager