Escribir un nuevo set de datos a Plist en lugar de sobrescribirlo

Estoy tratando de get un plist para almacenar múltiples sets de datos, pero cada vez que guardo (usando un button de una Hoja de Acción), sobrescribe el set anterior. Quiero agregar varios "amigos" y sus datos. No estoy muy interesado en usar Core Data, así que me pregunto cómo puedes hacerlo con un Plist.

Aquí está el código para el button Guardar:

NSMutableDictionary *friend = [[NSMutableDictionary alloc] init]; NSMutableDictionary *array = [[NSMutableDictionary alloc]init]; [array setObject:friendName.text forKey:@"Name"]; [array setObject:friendPhone.text forKey:@"Phone Number"]; [array setObject:friendEmail.text forKey:@"Email Address"]; [array setObject:friendChatSN.text forKey:@"Chat Screen Name"]; [friend setValue:array forKey: @"Friend Data"]; NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"FriendList.plist"]; [friend writeToFile:plistPath atomically: TRUE]; 

En lugar de sobrescribirlo, ¿cómo puedo modificar el código para agregar un nuevo set de datos de amigos cada vez que guardo?

Aquí se comporta como un solo object. así que cada vez que intente escribir algo en Plist, se replaceá con nuevos datos.

Parece que quieres save varios amigos para grabar el file Plist. La mejor solución para su pregunta es utilizar los datos centrales o sqlite. Pero si quiere lograrlo usando Plist, primero obtenga los datos antiguos de Plist y agregue nuevos datos (amigos) a los datos antiguos, luego saldrá guardando Plist.

Según su requisito, debe save NSArray con varios objects NSDictionary (logging amigo) en pList.

Aquí está el código modificado

 NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"FriendList.plist"]; NSMutableArray *friend = [NSMutableArray arrayWithContentsOfFile:plistPath]; if (nil == friend) { friend = [[NSMutableArray alloc] initWithCapacity:0]; } else { [friend retain]; } NSMutableDictionary *array = [[NSMutableDictionary alloc]init]; [array setObject:friendName.text forKey:@"Name"]; [array setObject:friendPhone.text forKey:@"Phone Number"]; [array setObject:friendEmail.text forKey:@"Email Address"]; [array setObject:friendChatSN.text forKey:@"Chat Screen Name"]; [friend addObject:array]; [array release]; [friend writeToFile:plistPath atomically: TRUE]; [friend release]; 

en lugar de [friend setValue: array forKey: @ "Datos de amigos"]; use una key única en lugar de @ "Datos de amigos", como el nombre de su amigo + apellido (al less …), o tendrá cada vez una sola input en su dictionary.