如何向plist添加新密钥?

时间:2012-01-21 04:53:11

标签: string cocoa key plist

我有一个包含键和值的plist文件,我希望用户能够使用其值保存一个键,以便以后可以回调它。我有回调部分都编程但我需要能够保存它。现在我有这个:

- (IBAction)addKey:(id)sender {
    NSString *string1 = [input stringValue];
    NSString *string2 = [filesField stringValue];

    NSMutableDictionary *fileKeys = [[NSMutableDictionary alloc] initWithContentsOfFile:
                          [[NSBundle mainBundle] pathForResource:@"Keys" ofType:@"plist"]];
    [fileKeys setValue:string2 forKey:string1];
}

我做错了什么,它并没有将这个键及其值添加到plist。

2 个答案:

答案 0 :(得分:2)

首先,您不应该真正更新捆绑包中的plist文件;虽然它可以工作,但它会破坏应用程序上的任何签名,并且肯定会破坏沙箱。

作为替代方法,您可以将原始plist存储在捆绑包中,并在第一次运行应用程序时将其复制到应用程序Application Support文件夹。

其次,您需要将修改后的字典写回文件系统,您可以使用NSDictionary的{​​{1}}或writeToURL:atomically方法执行此操作。

答案 1 :(得分:0)

plist不是唯一的选择。您还可以使用核心数据来实现它,具体取决于您要存储的内容。如果您使用CD,它会非常方便,您可以将GUI控件的外观绑定到CD中的项目。 基本上,您需要实体,一个用于用户,一个用于项目。这将允许您自己将配置保留在捆绑中。不应该在沙箱下破坏,但到目前为止我还没有沙箱的实际经验。