![](/img/trans.png)
[英]Dynamically Changing the Values of Root.plist File in Settings.bundle
[英]Settings Bundle Not Changing Results
我的设置捆绑选项有困难,无法在应用程序中更改设置。
我的Plist的结构如下。
在我viewDidLoad方法中,我有以下:
lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 80)];
lbl.backgroundColor = [UIColor clearColor];
lbl.textColor = [UIColor whiteColor];
lbl.text = @"Hello World";
lbl.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:lbl];
[lbl release];
BOOL changeBG = (BOOL)[[NSUserDefaults standardUserDefaults] valueForKey:@"cellSwitched"];
if (changeBG) {
lbl.textColor = [UIColor redColor];
} else {
lbl.textColor = [UIColor blackColor];
}
标签将变为黑色,但从不变为红色。 我尝试重新启动设备/重新安装应用程序。 开关似乎没有作用。
据我所知
(BOOL)[[NSUserDefaults standardUserDefaults] valueForKey:@"cellSwitched"]
会始终返回NO,因为我怀疑您的字典中没有名为cellSwitched的键。 它在属性列表中显示为名为key的键的值。
在您的plist中添加一个名为cellSwitched的键,并将其设置为Boolean类型,并将其值为YES或NO 。
代码应为:
BOOL changeBG = [[NSUserDefaults standardUserDefaults] boolForKey:@"cellSwitched"];
您正在滥用valueForKey并错误地投射结果。
当前,“ cellSwitched”是字典中NSString的内容,在“ key”的键下...
您想在左侧栏中而不是右侧栏中输入“ cellSwitched”。 此条目的类型应为BOOL,而不是字符串(中间列),并且在右侧列中的值为YES或NO ...
另外,您如何将此plist复制到NSUserDefaults中? 捆绑包中有一个plist文件并进行复制是不寻常的,通常,根据我的经验,大多数开发人员会在运行时将单个小对象设置为[NSUserDefaults standardUserDefaults]。 您是否知道捆绑软件中的plist文件是只读的? 我假设您正在将此文件加载到NSDictionary,然后将其保存在沙箱中的某个位置,以便对该文件具有读/写权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.