2010-04-20 3 views
1

내가 읽고 내 응용 프로그램에서 부울 값을 기록 아래의 코드를 사용 설정 응용 프로그램의 부울 값으로 설정할 수 없습니다 : 나는 "LoadAppSetting은"잘 작동 발견

-(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"] ; 


} 

를, 그것은 정확한 값을 얻을 수 키 "AnyKey"가있는 항목의 함수 "SaveAppSetting"은 기능이없는 것처럼 보였지만 아무런 오류도보고하지 않았지만 "AnyKey"키를 사용하여 항목의 값을 변경할 수는 없습니다.

번들 설정에서 "AnyKey"설정은

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

같은 문제를 만났다 사람이된다? 감사의 인터뷰

+0

당신의 솔루션은 잘 동작 할 것입니다. 그러나 [defaults setObject : b? @ "예": @ "아니오"forKey : @ "AnyKey"]; – Till

답변

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"] ; 
} 

유형 변환이 발생해야하므로 실제로 차이를 만들어서는 안됩니다. 자주 쓰기를 방지하기 위해

+ (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 동기화를 나중에에 : 그것은 가치가 무엇인지, 나는은 A BOOL을 얻기 위해 다음 사용합니다.