Запишите данные в plist - PullRequest
3 голосов
/ 27 мая 2011

Я хотел бы прочитать данные из списка, добавить некоторые элементы и записать данные в список. (Обновить список).

Я хочу, чтобы список содержал массив словарей, читатьэтот массив в мое приложение, добавить словари и затем записать массив обратно в plist.

Как это сделать?Я также не уверен, где и как создать листинг для запуска приложений.или он должен быть помещен в связку с самого начала?

Еще одна вещь, в которой я не уверен - может ли словарь plist содержать, например, CLLocations в качестве значений для ключей?Будет ли он сохранен правильно или CLLocation нужно разбить на значения широты и долготы?

Спасибо

1 Ответ

6 голосов
/ 27 мая 2011

Самый простой способ создать словарь из plist - это использовать метод dictionaryWithContentsOfFile:, например, чтобы загрузить plist из ваших ресурсов:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];

Написание списка одинаково просто:

[dict writeToFile:filePath atomically:YES];

(обратите внимание, что вы не можете записывать в ресурсы своего приложения, поэтому вам придется создать другой путь, например, в вашем каталоге Documents, см. NSSearchPathForDirectoriesInDomains)

Списки могут содержать только экземпляры NSDictionary, NSArray, NSNumber и NSString, поэтому вы не можете поместить CLLocation в Plist без преобразования. Если вам нужно сохранить объекты, не относящиеся к списку, посмотрите на NSKeyedArchiver. Он может создавать файлы и NSData объекты из всего, что принимает протокол NSCoding (CLLocation делает).

...