无法设置应用设置的bool值

时间:2010-04-20 03:04:57

标签: iphone

我使用下面的代码从我的应用程序中读取和写入bool值:

-(void)SaveAppSetting;
{
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];

    bool b=true;
    [defaults setBool:b forKey:@"AnyKey"];
    [defaults synchronize];
}
-(void)LoadAppSetting;
{
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    bool b=[defaults boolForKey: @"AnyKey"] ;


}

我发现“LoadAppSetting”效果很好,可以使用键“AnyKey”获得正确的item值。 函数“SaveAppSetting”看起来没有任何功能,它报告没有错误,但它不能使用键“AnyKey”更改项目的值。

设置包中的“AnyKey”设置为

item               Dictionary
Type               String       PSToggleSwitchSpecifier
Title              String       AnyKey's Title
Key                String       AnyKey
DefaultValue       Boolean      Checked

有没有人遇到同样的问题? 谢谢interdev

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用BOOL类型。我并非100%确定它们完全相同。 BOOL是一个char类型,我认为bool是int。

-(void)SaveAppSetting;
{
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];

    BOOL  b = YES;
    [defaults setBool:b forKey:@"AnyKey"];
    [defaults synchronize];
}
-(void)LoadAppSetting;
{
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    BOOL b=[defaults boolForKey: @"AnyKey"] ;
}

因为类型转换应该发生,所以真的不应该有所作为。对于它的价值,我使用以下内容来获得BOOL:

+ (void) setXEntryHighlighted:(BOOL) newValue
{
    [[NSUserDefaults standardUserDefaults] setBool:newValue forKey:DEFAULTS_XENTRY_HIGHLIGHTED];
}
+ (BOOL) xEntryHighlighted
{
    BOOL   rValue = [[NSUserDefaults standardUserDefaults] boolForKey:DEFAULTS_XENTRY_HIGHLIGHTED];
    return (rValue);
}

我稍后会同步以避免频繁写入。