我是Objective-C的新手,所以非常感谢任何帮助。
我正在试图弄清楚如何删除plist文件中的子键和值。例如,plist文件的内容如下:
“网络服务”下字典中的键是我试图删除的(只是其中一个)及其相关值。
奇怪的是我的代码可以删除'CurrentSet','Model'和'NetworkServices',但我似乎无法深入研究删除任何键。
NSError *error;
NSString *filepath = @"/Users/myHomeFolder/Desktop/preferences.plist";
NSPropertyListFormat plistFormat;
NSDictionary *dict = [NSPropertyListSerialization propertyListWithData:[NSData dataWithContentsOfFile:@"/Users/myHomeFolder/Desktop/preferences.plist"] options:NSPropertyListMutableContainersAndLeaves format:&plistFormat error:&error];
[dict removeObjectForKey:@"2236EA34-D3CC-4C5E-8F9C-91F3639EC60E"];
[dict writeToFile:filepath atomically:YES];
NSLog(@"%@",dict);
在上面的代码中,我试图删除密钥'2236EA34-D3CC-4C5E-8F9C-91F3639EC60E'。
我只想说这纯粹是为了好奇心。我意识到可能还有其他工具可以使这更容易,但我正在尝试专门学习Objective-C,我觉得最好的学习方法是尽可能多地进行调查。
非常感谢。
答案 0 :(得分:0)
抓住嵌套词典:
[[dict valueForKey:@"NetworkServices] removeObjectForKey:@"2236EA34-D3CC-4C5E-8F9C-91F3639EC60E"]]
这需要NSMutableDictionaries
。
此外,对于应用偏好存储,您应该使用[NSUserDefaults standardUserDefaults]
。
如果您使用NSUserDefaults
,则可以使用点分隔符指定密钥路径:
@"NetworkServices.2236EA34-D3CC-4C5E-8F9C-91F3639EC60E"