2010-04-20 166 views
1

我用下面的代码读取和我的应用程序中编写一个布尔值的布尔值:不能设置应用程序设置

-(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”。 函数“SaveAppSetting”看起来没有功能,它报告没有错误,但它不能用键“AnyKey”更改项目的值。

在设置捆绑“任意键”设置为

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

有没有遇到同样的问题,任何人吗? Thanks interdev

+0

你的解决方案应该可以正常工作 - 但你可以尝试[默认setObject:b? @“YES”:@“NO”forKey:@“AnyKey”]; – Till 2010-04-20 05:59:27

回答

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); 
} 

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