iOS: сохранение рекордов локально - PullRequest
1 голос
/ 29 марта 2012

Я хочу сохранить рекорд для локального использования.Единственное целое число, которое содержит ваш наивысший балл, поэтому я могу проверить его при создании нового балла.

Вы бы порекомендовали использовать 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];

будут ли эти данные доступны при следующем открытии приложения?

1 Ответ

5 голосов
/ 29 марта 2012

Самым быстрым и простым способом, имхо, было бы использование NSUserDefaults. Вы получаете скорость чтения / записи в plist, но вам не нужно иметь дело с созданием целого нового файла только для одного значения. Код для установки высокой оценки будет выглядеть следующим образом ..

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

Бум, это все, что тебе нужно. Затем, когда вы в следующий раз запустите приложение и захотите проверить этот высокий балл, возможно, в методе - (void) gameEnded или - (void) viewDidLoad, вы просто скажете

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

lastHighScore теперь будет значением, сохраненным в пользовательских значениях по умолчанию, которые вы ранее сохранили. Использование setInteger: forKey: перезапишет предыдущее значение, если ключ уже существует.

...