Сохранить NSDictionary в список - PullRequest
13 голосов
/ 10 июня 2011

Я использую код, найденный в этом посте: Множественные массивы из Plist , с тем же форматированием plist.

Это работает успешно, однако я не знаю, как сохранить созданноемассивы обратно в plist, в том же формате.

Как бы мне этого добиться?

РЕДАКТИРОВАТЬ: мне нужно не столько экономия, сколько формирование данных для сохранения.
plist - это массив словарей со строками и соответствующими им ключами.Все строки с определенным ключом помещаются в собственный массив.

Как бы я поместил этот массив обратно в правильные позиции в массиве словарей, готовых к сохранению?

Ответы [ 3 ]

24 голосов
/ 10 июня 2011

Вот самый простой способ:

NSDictionary* dict = ...;
[dict writeToFile:@"..." atomically:YES];

См. Документацию для -writeToFile:atomically:.

16 голосов
/ 10 июня 2011

Не забудьте создать myPlistFile.plist и добавить его в папку ресурсов приложения.

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

вы можете сканировать пути здесь и искать myPlistFile.plist, используя цикл for.

NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"myPlistFile.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath: plistPath])
{
          NSString *bundle = [[NSBundle mainBundle] pathForResource:@"myPlistFile" ofType:@"plist"];
          [[NSFileManager defaultManager] copyItemAtPath:bundle toPath:plistPath error:&error];
}
[myDict writeToFile:plistPath atomically: YES];
1 голос
/ 23 мая 2013

И наоборот, чтобы загрузить NSDictionary FROM из файла:

+ (id)dictionaryWithContentsOfFile:(NSString *)path;
...