2012-03-29 2 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

Самый быстрый и простой способ сделать это, ИМХО, будет использовать 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. Чрезвычайно тривиально для того, кто взломал свой телефон, чтобы войти и изменить эти ценности, чтобы дать себе высокие оценки. –

+0

Полезно знать. Я никогда ничего не делал с GameCenter или взломал плиты с помощью взломанного телефона в тюрьме. Спасибо за понимание! – jmstone617

+0

Сделал то, что мне было нужно, спасибо – Lohardt

Смежные вопросы