Writing a new set of data to Plist instead of overwriting it

你。 提交于 2019-11-30 16:33:10

Here pList behave as an one object. so whenever you try to write something to plist it will be replaced with new data.

Look like you want to save multiple friends record to plist file. Best solution for your question is to use core data or sqlite. But if you want to achieve it using plist, then first get old data from plist and the add new data (friends) to old data then saving to plist should work out.

As per your requirement you should save NSArray with multiple NSDictionary(friend record) object to pList.

Here is the modified code

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

instead of [friend setValue:array forKey: @"Friend Data"]; use a unique key in place of @"Friend Data", like the friend name+surname (at least...), or you'll have each time a single entry in your dictionary.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!