¿Cómo escribir un dato en Plist?

He seguido esta respuesta para escribir datos en el plist

¿Cómo escribir datos en el plist?

Pero hasta ahora mi plist no cambió en absoluto.

Aquí está mi código:

- (IBAction)save:(id)sender { NSString *path = [[NSBundle mainBundle] pathForResource:@"drinks" ofType:@"plist"]; NSString *drinkName = self.name.text; NSString *drinkIngnetworkingients = self.ingnetworkingients.text; NSString *drinkDirection = self.directions.text; NSArray *values = [[NSArray alloc] initWithObjects:drinkDirection, drinkIngnetworkingients, drinkName, nil]; NSArray *keys = [[NSArray alloc] initWithObjects:DIRECTIONS_KEY, INGREDIENTS_KEY, NAME_KEY, nil]; NSDictionary *dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys]; [self.drinkArray addObject:dict]; NSLog(@"%@", self.drinkArray); [self.drinkArray writeToFile:path atomically:YES]; } 

¿Necesito hacer algo extra?

Soy nuevo en el iPhone SDK, por lo que se agradecería cualquier ayuda.

Está intentando escribir el file en su package de aplicaciones, lo que no es posible. Guarde el file en la carpeta Documentos en su lugar.

 NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; path = [path stringByAppendingPathComponent:@"drinks.plist"]; 

El método pathForResource solo se puede usar para leer los resources que agregó a su proyecto en Xcode.

Esto es lo que típicamente hace cuando quiere modificar un plist en su aplicación:
1. Copie el drinks.plist de su package de aplicaciones a la carpeta Documentos de la aplicación en el primer lanzamiento (usando NSFileManager ).
2. Solo use el file en la carpeta de documentos al leer / escribir.

ACTUALIZAR

Así es como inicializarías la propiedad drinkArray :

 NSString *destPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; destPath = [destPath stringByAppendingPathComponent:@"drinks.plist"]; // If the file doesn't exist in the Documents Folder, copy it. NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:destPath]) { NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"drinks" ofType:@"plist"]; [fileManager copyItemAtPath:sourcePath toPath:destPath error:nil]; } // Load the Property List. drinkArray = [[NSArray alloc] initWithContentsOfFile:destPath];