我创建了一种将数据写入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/