запись NSDictionary к plist в моем комплекте приложений

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

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];
9
задан Peter Hosey 24 March 2010 в 14:53
поделиться

2 ответа

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

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

NSString *cachesDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
24
ответ дан 4 December 2019 в 07:34
поделиться

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

5
ответ дан 4 December 2019 в 07:34
поделиться