从plist中删除子键(Objective-C)

时间:2014-07-14 15:51:54

标签: objective-c dictionary

我是Objective-C的新手,所以非常感谢任何帮助。

我正在试图弄清楚如何删除plist文件中的子键和值。例如,plist文件的内容如下:

enter image description here

“网络服务”下字典中的键是我试图删除的(只是其中一个)及其相关值。

奇怪的是我的代码可以删除'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,我觉得最好的学习方法是尽可能多地进行调查。

非常感谢。

1 个答案:

答案 0 :(得分:0)

抓住嵌套词典:

[[dict valueForKey:@"NetworkServices] removeObjectForKey:@"2236EA34-D3CC-4C5E-8F9C-91F3639EC60E"]]

这需要NSMutableDictionaries

此外,对于应用偏好存储,您应该使用[NSUserDefaults standardUserDefaults]

如果您使用NSUserDefaults,则可以使用点分隔符指定密钥路径:

@"NetworkServices.2236EA34-D3CC-4C5E-8F9C-91F3639EC60E"