2012-03-29 5 views
1

로컬 사용만을위한 최고 점수를 저장하고 싶습니다. 최고 점수를 보유하는 단일 int는 새로운 점수가 만들어지면 그것을 테스트 할 수 있습니다.iOS : 로컬 최고점 저장

plist를 사용 하시겠습니까? 같은

뭔가 :

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"]; 
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain]; 

versionLabel = [[UILabel alloc] initWithFrame:CGRectMake(100,100,60,25)]; // for example 
versionLabel.backgroundColor = [UIColor clearColor]; 
versionLabel.textColor = [UIColor whiteColor]; 
versionLabel.font = [UIFont systemFontOfSize:10]; 
NSString *versionString = [NSString stringWithFormat:@"v%@", [plistData objectForKey:@"CFBundleVersion"]]; 
versionLabel.text = versionString; 
[self.view addSubview:versionLabel]; 

이 데이터는 다음에 앱을 열 때 사용할 수?

답변

5

가장 빠르고 쉬운 방법은 IMHO가 NSUserDefaults를 사용하는 것입니다. 당신은 plist에 읽기/쓰기의 속도를 얻지 만, 당신은 하나의 값에 대해서만 완전히 새로운 파일을 생성 할 필요가 없습니다. 높은 점수를 설정하는 코드는 다음과 같습니다.

[[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"high_score"]; 

붐, 그게 전부입니다. 다음에 응용 프로그램을 실행하고 아마도에, 그 높은 점수를 확인하고자 할 때 다음, - (무효) gameEnded 방법, 또는 - (무효) viewDidLoad에, 당신은 단지

가 이
NSInteger lastHighScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"high_score"]; 

lastHighScore 이제 값이 저장 될 말 사용자가 이전에 저장 한 사용자 기본값입니다. setInteger : forKey :를 사용하면 키가 이미 존재하는 경우 이전 값을 덮어 씁니다.

+0

이것은 잘 작동하지만, 결국이 스코어를 글로벌하게 만들기를 원하는 사람들에게는주의해야합니다 (예 : 게임 센터 또는 ngmoco 등) : NSUserDefaults는 plist 일뿐입니다. 자신의 전화를 jailbroken하는 사람이 들어 와서 높은 점수를주기 위해이 값을 변경하는 것은 매우 사소한 일입니다. –

+0

알아두면 좋을 것 같습니다. GameCenter를 사용하거나 감옥에 전화를 걸어 해킹 plists 아무것도하지 못했습니다. 통찰력에 감사드립니다! – jmstone617

+0

내가 무엇을 필요로했는지, 감사했다. – Lohardt