2010-04-20 137 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稍後同步以避免頻繁寫入。