escrevendo NSDictionary para plist no meu pacote de aplicativos

Eu estou tentando escrever um NSDictionary para um plist mas quando eu abro o plist nenhum dado foi escrito para ele. Do log meu caminho parece correto e meu código é bastante normal. Alguma ideia?

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]; 

Johan está certo – você não tem permissão para modificar o pacote do seu aplicativo. Você tem duas boas opções para onde salvar seu dictionary: o diretório de documentos, que é copiado pelo iTunes quando um usuário sincroniza seu dispositivo; ou o diretório de caches, que não é feito backup. Se você não precisa fazer o backup dos dados, coloque-os em caches para não desacelerar a synchronization. Você pode obter os caminhos do diretório da seguinte forma:

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

Ele não é salvo porque você não pode escrever no pacote do seu aplicativo. Salve seu arquivo em outro lugar, na pasta de documentos, por exemplo.