2013-03-05 2 views
0

퀴즈 게임을 만듭니다. 사용자가 정답을 선택하는 경우, "showLogo는"다음 질문으로 이동하기 위해 다시 호출됩니다NSUserDefaults로 데이터 저장

- (void) viewDidLoad 
{ 
logos = [[NSMutableArray alloc] init]; 
[logos addObject:@"adidas"]; 
[logos addObject:@"nike"]; 
[logos addObject:@"puma"]; 

[self showLogo]; 
} 

int currentQuestionIndex; 

- (void) showLogo 
{ 

currentQuestionIndex++; 

NSString *question = [logos objectAtIndex:currentQuestionIndex]; 

[_questionImage setImage:[UIImage imageNamed:question]]; 

... 

} 

: 여기 내 코드의 일부이다. 그래서 Level이 완성됩니다.

모든 것이 효과적입니다.

정보/레벨을 저장하는 데 도움을주십시오. IF 레벨이 완료되면 사용자가 게임을 시작하면 저장된 레벨부터 시작해야합니다.

내가 이미 뭘하려 :

- (void) checkAnswer 
{ 

///... if user answered right 

[[NSUserDefaults standardUserDefaults] setInteger:currentQuestionIndex forKey:@"currentLevel"]; 

[self showLogo]; 
/// so, I tried to save "currentQuestionIndex" forKey currentLevel, and call "showLogo" 
} 

을 여기에 "showLogo"

- (void) showLogo 
{ 

int savedLevel = [[NSUserDefaults standardUserDefaults] integerForKey:@"currentLevel"]; 

currentQuestionIndex = savedLevel+1 ; 

NSString *question = [logos objectAtIndex:currentQuestionIndex]; 

[_questionImage setImage:[UIImage imageNamed:question]]; 

... 

} 

수정하지만,이 방법을 사용 .. 작동하지 않습니다, 나는 점수를 저장하려고하고, 그것도 작동합니다 ..

도움말하십시오. 감사합니다

답변

0

NSUserDefaults에 키 - 값을 설정 한 후에 synchronize 메서드를 사용하여 저장해야합니다.

[[NSUserDefaults standardUserDefaults] setInteger:currentQuestionIndex forKey:@"currentLevel"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 
1

documentation에 명시된 바와 같이, 당신은 NSUserDefaults에 원시 (int)를 저장할 수 없습니다. 당신은 당신이 이런 일을 수행하여, 저장하기 전에의 NSNumber로 INT를 설정해야 할 것입니다 : 당신이 그것을 다시로드 할 때 당신은 int를 필요로하는 경우, 다시 사용할 수있는 그런

NSNumber *questionIndex = [[NSNumber alloc] numberWithInt:currentQuestionIndex]; 

intValue

+0

내 대답에서 코드를 시도하고 작동합니다. – tolgamorf

+0

문제는 제 생각대로입니다. 그것은 작동하지만, 애플 리케이션을 다시 시작할 때마다 질문에 대답하지 않고도 레벨이 올라갈 때마다. :) 그래서, 내 NSUserDefaults 현재 수준을 저장합니다. 앱을 다시 실행하면 내 코드가 NSUserDefaults ++를 읽고 자동으로 다음 레벨로 이동하고 현재 레벨을 저장하고 다시 ... –

관련 문제