我手动向我的AppName-Info.plist添加了一个名为“App”的密钥,我可以通过调用此代码从中获取值
NSBundle *mainBundle;
mainBundle = [NSBundle mainBundle];
NSString *value = [mainBundle objectForInfoDictionaryKey:@"App"];
NSLog(@"App: %@",value);
但我不能做的是用任何代码改变价值..这可能吗?如果是,怎么办呢?
提前感谢您的帮助:)
答案 0 :(得分:4)
您应该考虑NSUserDefaults ,或者如果您想修改捆绑的.plist,请尝试此操作。
NSString* plistFilePath = nil;
NSFileManager* manager = [NSFileManager defaultManager];
if ((plistFilePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"mySpecial/PathTo.plist"]))
{
if ([manager isWritableFileAtPath:plistFilePath])
{
NSMutableDictionary* infoDictioio = [NSMutableDictionary dictionaryWithContentsOfFile:plistFilePath];
[infoDictio setObject:@"foo object" forKey:@"fookey"];
[infoDictio writeToFile:plistFilePath atomically:NO];
[manager setAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] ofItemAtPath:[[NSBundle mainBundle] bundlePath] error:nil];
}
}
答案 1 :(得分:2)
您不应在运行时修改应用Info.plist文件(或应用包中的任何内容)。这是不好的做法,也会破坏您的捆绑代码签名(这将导致无法再启动应用程序!)。
如果您想存储设置,请查看NSUserDefaults。
答案 2 :(得分:1)
这是不可能的。
默认情况下,AppName-Info.plist不会复制到构建的Copy Bundle Resources阶段的包中。
因此,如果你想要一个可以写入选项的plist,那就是在运行时在临时文件位置创建它并在那里读/写它。
This是研究如何做的好地方。