设置包不更改结果

时间:2014-02-06 03:41:14

标签: ios iphone objective-c sdk

我的设置包选项有困难,并且能够更改我的应用程序中的设置。

我的Plist按以下方式构建。

My Plist is structured the following way

在我的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];
}

标签变为黑色,但从不变为红色。我尝试重启设备/重新安装应用程序。看来开关没有效果。

3 个答案:

答案 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,然后将其保存在沙箱中的某个位置,以便对此文件具有读/写权限。