написание NSDictionary для plist в моем комплекте приложений - PullRequest
9 голосов
/ 23 марта 2010

Я пытаюсь записать NSDictionary в список, но когда я открываю список, никакие данные не были записаны в него. Из журнала мой путь выглядит правильным, и мой код довольно стандартный. Есть идеи?

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil];
NSArray *objects = [NSArray arrayWithObjects:@"value1", @"value2", @"value3", nil];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

for (id key in dictionary) {
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}

NSString *path = [[NSBundle mainBundle] pathForResource:@"FormData" ofType:@"plist"];
NSLog(@"path:%@", path);

[dictionary writeToFile:path atomically:YES];

Ответы [ 2 ]

24 голосов
/ 23 марта 2010

Йохан прав - вам не разрешено изменять пакет вашего приложения. У вас есть два хороших варианта, где сохранить ваш словарь: каталог документов, который резервируется iTunes при синхронизации пользователем своего устройства; или каталог кэшей, для которого нет резервных копий. Если вам не требуется резервное копирование данных, поместите их в кэш-память, чтобы не замедлять синхронизацию. Вы можете получить пути к каталогам так:

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString *cachesDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
5 голосов
/ 23 марта 2010

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

...