gpt4 book ai didi

cocoa - 覆盖而不是写入 plist-cocoa

转载 作者:行者123 更新时间:2023-12-03 17:43:50 24 4
gpt4 key购买 nike

我创建了一种将数据写入 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。
请告诉我这个方法有什么问题......:(

提前致谢...

最佳答案

用这一行:

code>[userCredentials setObject:userIDKey forKey:type];

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com