2011-09-15 5 views
2

새로운 iPhone 응용 프로그램을 개발하고 있으며 현재 NSUserDefaults를 사용하여 최고 기록을 저장하고로드하려고합니다. 내 질문은 : 정확히 내가 highscorespointer1, NSInteger에 대한 포인터라는 변수에 저장 한 최고 기록을 할당하는 데 사용해야합니까? 현재 아래 표시된 코드를 사용하고 있습니다.NSUserDefaults를 사용하여 데이터 저장 및로드시 도움이 필요합니다.

여기 최고 기록을 저장하고 있습니다.

-(IBAction)saveData{ 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:highscore1 forKey:@"H1"]; 
    [defaults synchronize]; 
      } 

그리고 여기 내가이 경고를 얻을 highscore.But로드 오전 : "호환되지 않는 포인터 유형에서 할당"

highscorepointer1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"H1"]; 

답변

1

setInteger:forKey 방법 세트를 변수 highscore1 유형의 NSInteger 유의 int이 아니라 int *이 아니라 포인터가 아니라 값을 설정합니다. highscorepointer1이 이 아닌 int인지 확인하십시오. 포인터를 정수에 저장하는 것은 의미가 없지만 실제 정수 자체를 저장해야합니다. 희망 그 도움!

+4

'integerForKey :'를 사용하면'objectForKey : '가 아닌 정수를 검색 할 수 있습니다. 분당 포스터는 개체에 대한 포인터를 리터럴에 대한 포인터에 할당하려고합니다. – Tommy

+0

고마워요! 나는 네가 한 말대로 했어. 마치 매력처럼 일 했어. 한 번 더 질문 : 내가 전에 포인터를 저장 한 데이터를 할당 할 때이 코드 줄을 사용할 수 있습니다 : if (highscorepointer1 == nil) {highscore1 = 0;}'highscore를 0으로 설정하려면 앱이 처음 실행될 때 이미로드 된 데이터를 정수 highscore1에 직접 할당하는 것과 비슷한 것을 사용할 수 있습니까? – CherryBrandy

+0

실제로,'highscore1 = [[NSUserDefaults standardUserDefaults] integerForKey : @ "H1"];'을 사용하고 아직 설정되지 않았다면,'highscore1'은 '0'과 같을 것입니다. – msgambel

관련 문제