我创建了一种将数据写入plist的方法。

- (void)writeToPListUserType:(NSString *)type
                   andUserID:(NSString *)usid
                andFirstName:(NSString *)fname
                 andLastName:(NSString *)lname
                 andPassword:(NSString *)pwd{

    NSMutableDictionary *userDetails = [[NSMutableDictionary alloc] init];
    [userDetails setObject:fname forKey:@"firstName"];
    [userDetails setObject:lname forKey:@"lastName"];
    [userDetails setObject:pwd forKey:@"password"];

    NSMutableDictionary *userIDKey = [[NSMutableDictionary alloc] init];
    [userIDKey setObject:userDetails forKey:usid];

    [userCredentials setObject:userIDKey forKey:type];
    [userIDKey release];
    [userDetails release];

    NSString *error;

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

    NSString *plistPath = [rootPath stringByAppendingPathComponent:
                                                     @"userCredentials.plist"];

    NSData *plistData = [NSPropertyListSerialization
                                           dataFromPropertyList:userCredentials
                                            format:NSPropertyListXMLFormat_v1_0
                                                      errorDescription:&error];

    [plistData writeToFile:plistPath atomically:YES];
}


我能够将新数据写入plist。但是,当写入新数据时,旧数据将不再存在。换句话说,该方法将覆盖我的plist。
请告诉我该方法有什么问题... :(

提前致谢...

最佳答案

用这行:

代码> [userCredentials setObject:userIDKey forKey:type];

您正在用新数据覆盖现有的“ userCredentials”“ type”键(我看不到该方法中新分配的键)。

因此,userCredentials(我认为是在其他地方创建的可变字典)被新数据覆盖。

关于cocoa - 覆盖而不是写入plist-cocoa,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4884023/

10-11 19:33
查看更多