更改plist中的值 - 不更改值

时间:2014-11-18 21:48:31

标签: objective-c xcode cocoa

我使用这个简单的方法,我发现写一个plist,但它似乎不起作用:

-(IBAction)modifyPlist:(id)sender{

NSBundle *mainBundle=[NSBundle mainBundle];
NSString *path=[mainBundle pathForResource:@"Preferences" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:path];
[[dict objectForKey:@"Root"] setBool:YES forKey:@"startup"];
}

我做错了什么? 感谢

3 个答案:

答案 0 :(得分:1)

您正在将文件加载到内存中,并修改该内存,但您没有将其写回磁盘。您需要使用NSDictionary的{​​{1}}

-writeToFile:atomically:

Reference link here

答案 1 :(得分:0)

我希望你确切地知道你正在做什么,这是(出于何种原因)你的设计决定 -
因为您即将写入您应用的附件

在Sandboxing下肯定会失败并且通常是一个糟糕的坏主意。

如果您在存储用户默认设置后,请在Mac上阅读存储首选项的方式:
Preferences and Settings Programming Guide

答案 2 :(得分:0)

// Make a path to the plist in the Documents directory (not the bundle directory)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Preferences.plist"];

// Then after creating or making changes to your dictionary, write your dictionary out to the plist file
[dict writeToFile:path atomically:YES];

也许看看: Should I use NSUserDefaults or a plist to store data?