2010-04-01 3 views
0

NSUserDefaults를 사용하여 저장 한 데이터를 저장했습니다. 나는 아무 것도 키에 이미 저장되어있는 경우 (처음 앱을 실행할 때) 기본값이 0이 될 것이라는 인상을 받았다. 그러나 그런 경우는 아닌 것 같다.프로그램에 알려주기 저장 데이터가 없으면 수행 할 작업 NSUserDefaults, iPhone

가 저장하려면 :

- (void)viewWillDisappear:(BOOL)animated 
{ 
[[NSUserDefaults standardUserDefaults] setInteger:setbatteryHealthCalculated  forKey:@"healthValue"]; 

    [[NSUserDefaults standardUserDefaults] synchronize]; 

} 

로드하려면

- (void) viewWillAppear:(BOOL)animated 
{ 
NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults]  integerForKey:@"healthValue"]; 
} 

을 값 저장 확인하려면 :

- (IBAction)check{ 

    NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults] integerForKey:@"healthValue"]; 


    if (setbatteryHealthCalculated = 0) { 

       [self performSelector:@selector(displayAlert) withObject:nil]; 

} 
} 

답변

3
if (setbatteryHealthCalculated = 0) { 
여기

내가 가진 무엇

흠.

if (setbatteryHealthCalculated == 0) 

비교 연산자는 == 대신 C 같은 언어 =이다이어야한다.

원본 코드는 무엇이든간에 setbatteryHealthCalculated을 0으로 설정합니다. 0은 거짓이므로 if 브랜치는 절대로 실행되지 않으며 경고가 표시되지 않습니다.

또한 원본 코드에는 불균형 중괄호가 있습니다. BTW


setbatteryHealthCalculated 바르입니까? 그렇다면 NSInteger를 제거하십시오. 그렇지 않으면 당신은 ivar을 가리키는 지역 변수를 선언하고 있습니다.

2

귀하의 앱이 실행되는 동안 registerDefaults:으로 전화하여 기본값 (부끄럽지만 작동 방식)에 대한 기본값을 설정하십시오. 기본값에 액세스하는 코드보다 먼저 호출해야합니다. 그러나 NSUserDefaults는 존재하지 않는 키에 대해 0 또는 nil을 반환합니다.

관련 문제