2012-03-29 12 views
1

Ich möchte eine High-Score nur für den lokalen Gebrauch speichern. Ein einzelner Int, der deine höchste Punktzahl hält, damit ich ihn testen kann, wenn eine neue Punktzahl erzielt wird.iOS: Speichern von High-Score vor Ort

Würden Sie die Verwendung des PLIST empfehlen?

Etwas wie:

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

werden diese Daten beim nächsten Mal wird die App geöffnet zur Verfügung stehen?

Antwort

5

Die schnellste und einfachste Möglichkeit, IMHO, wäre NSUserDefaults zu verwenden. Sie erhalten die Geschwindigkeit des Lesens/Schreibens auf einem Plist, aber Sie müssen sich nicht damit befassen, eine ganze neue Datei nur für einen einzelnen Wert zu erstellen. Der Code für die Highscore-Einstellung würde wie folgt aussehen ..

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

Boom, das ist alles, was Sie brauchen. Dann, wenn Sie neben der App starten und wollen, dass hohe Punktzahl überprüfen, vielleicht in einem - (void) gameEnded Methode oder - (void) viewDidLoad, die Sie gerade sagen

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

lastHighScore wird nun der Wert gespeichert werden in den Benutzereinstellungen, die Sie zuvor gespeichert haben. Verwenden von setInteger: forKey: Überschreibt den vorherigen Wert, wenn der Schlüssel bereits existiert.

+0

Das funktioniert gut, aber ein Vorbehalt für diejenigen von euch, die diese Punkte global machen wollen (zB mit Game Center oder ngmoco oder was auch immer): "NSUserDefaults" ist nur ein Plist. Es ist extrem trivial, wenn jemand, der sein Telefon jailbreak hat, reingeht und diese Werte ändert, um sich hohe Punktzahlen zu verschaffen. –

+0

Das ist gut zu wissen. Ich habe noch nie etwas mit GameCenter oder Hackerplattformen mit einem kaputten Telefon gemacht. Danke für die Einsicht! – jmstone617

+0

Hat was ich brauchte, danke – Lohardt