Iphone 将一组新数据写入Plist而不是覆盖它

Iphone 将一组新数据写入Plist而不是覆盖它,iphone,ios,nsmutablearray,plist,save,Iphone,Ios,Nsmutablearray,Plist,Save,我试图让plist存储多组数据,但每次保存(使用操作表中的按钮)时,它都会覆盖上一组数据。我想添加多个“朋友”及其数据。我对使用核心数据不太感兴趣,所以我想知道如何使用Plist 以下是“保存”按钮的代码: NSMutableDictionary *friend = [[NSMutableDictionary alloc] init]; NSMutableDictionary *array = [[NSMutableDictionary alloc]init];

我试图让plist存储多组数据,但每次保存(使用操作表中的按钮)时,它都会覆盖上一组数据。我想添加多个“朋友”及其数据。我对使用核心数据不太感兴趣,所以我想知道如何使用Plist

以下是“保存”按钮的代码:

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

如何修改代码以在每次保存时添加一组新的朋友数据而不是覆盖它?

而不是[friend setValue:array forKey:@“friend data”];使用唯一键代替@“朋友数据”,如朋友姓名+姓氏(至少…),否则每次字典中只有一个条目。

这里pList作为一个对象。因此,无论何时尝试编写plist,它都将被新数据替换

看起来您想将多个好友记录保存到plist文件。对于您的问题,最好的解决方案是使用核心数据或sqlite。但是,如果您想使用plist实现它,那么首先从plist获取旧数据,然后将新数据(朋友)添加到旧数据,然后保存到plist应该是可行的

根据您的要求,您应该使用多个
NSDictionary
(好友记录)对象将
NSArray
保存到pList

这是修改后的代码

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

我错过了一些东西或[friend setValue:array forKey:@“friend Data”];你有什么问题吗?您每次在dict中将数组值设置为同一个键时都会覆盖旧数据…我知道我正在覆盖它。我对iOS相当陌生,不知道如何编写代码来保存一组新的值。如果您能更明确一点并修改我的代码,我将非常感激。谢谢。我真的很感谢你的帮助。