我的设置包选项有困难,并且能够更改我的应用程序中的设置。
我的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];
}
标签变为黑色,但从不变为红色。我尝试重启设备/重新安装应用程序。看来开关没有效果。
答案 0 :(得分:0)
据我所知
(BOOL)[[NSUserDefaults standardUserDefaults] valueForKey:@"cellSwitched"]
将始终返回NO,因为我怀疑您的词典中没有名为 cellSwitched 的键。它会在您的属性列表中显示为名为键的键的值。
将一个名为 cellSwitched 的键添加到您的plist并使其类型为布尔,并为其指定值 YES 或 NO 强>
答案 1 :(得分:0)
代码应为:
BOOL changeBG = [[NSUserDefaults standardUserDefaults] boolForKey:@"cellSwitched"];
您滥用valueForKey并错误地转换结果。
答案 2 :(得分:0)
“cellSwitched”目前是你的词典中“密钥”键下的NSString的内容......
您希望左侧列中的“cellSwitched”,而不是右侧列。此条目应该具有BOOL类型而不是字符串(中间列),右侧列中的值为YES或NO ...
另外,你如何将这个plist复制到NSUserDefaults中?在包中包含一个plist文件并将其复制过来是不常见的,通常我经验中的大多数开发人员会在运行时将各个小对象设置为[NSUserDefaults standardUserDefaults]。您是否知道捆绑包中的plist文件是只读的?我假设您将此加载到NSDictionary,然后将其保存在沙箱中的某个位置,以便对此文件具有读/写权限。