如果plist的数据类型是不可变的,如何重写plist?

时间:2010-04-21 22:22:24

标签: plist nsdictionary immutability

我对使用plists初始化我的应用感到满意。我现在想要将app状态保存回用于初始化应用程序的plist,我发现自己陷入困境。在应用程序启动时,我将plist输入到一个不可变的NSDictionary中。我现在想通过用现有键的新值替换旧值来更新NSDictionary,并通过[NSDictionary writeToFile:atomically]写入plist。我如何解决NSDictionary的不变性?

谢谢, 道格

更新 - 还没有完成

我按照zneak的建议,将我的设置文件输入NSMutableDictionary。工作良好。在编写plist之前,我确认新值现在替换旧值。凉。很高兴。

问题:当我这样写文件时:

if ([self.settings writeToFile:plistPath atomically:YES] == NO) {

    NSLog(@"Unable to write plist");
}

方法很愉快地完成 - 条件是YES而不是NO - 但我看不到文件。文件在哪里消失了?

我不应该在目录树中看到新文件吗?

2 个答案:

答案 0 :(得分:1)

通过调用NSMutableDictionary将其设为-[myDict mutableCopy],然后使用此文件写入文件;或者只是使用[NSMutableDictionary dictionaryWithContentsOfFile:(NSString*)]加载plist以获取一个可变实例,而不是一个不可变实例。

答案 1 :(得分:0)

使用NSMutableDictionary(您可以使用-[NSDictionary mutableCopy]创建它)。然后,您可以像writeToFile一样使用NSDictionary