2011-01-09 1 views
1

У меня есть некоторый код, в моих классах, чтобы читать из NSUserDefaultsNSUserDefaults: обнаруживая всухую

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
score = [defs integerForKey:@"score"]; 

это приводит к сбою.

Я предполагаю, что это потому, что оценка равна нулю или не существует.

Как проверить, нет ли этого?

EDIT.

Следующий код вызывает сбой при хранении в NSUserDefaults.

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
    [defs setInteger:0 forKey:@"score"]; 
    [defs setInteger:3 forKey:@"lives"]; 
    [defs release]; 

Я не уверен, что вопрос

На некоторых аварий там не даже отчет об ошибке в консоли.

Благодаря

ответ

9

Согласно документации, «если указанный ключ не существует, этот метод возвращает 0». Поэтому integerForKey всегда будет возвращать NSInteger, даже если вы его не установили.

Редактировать: Теперь вы отредактировали свой вопрос, я вижу проблему. Вы выпускаете NSUserDefaults. Для этого нет оснований. Удалите строку [release] из вашего кода.

[NSUserDefaults standardUserDefaults] возвращает одноэлементный класс. Вы не владеете им, поэтому не должны выпускать его. Просмотрите Apple Memory Mangement Rules, если вы не уверены в том, когда сохранить/освободить.

+0

Я получаю следующую ошибку - [__ NSCFSet integerForKey:]: нераспознанный селектор отправлен в экземпляр 0x69697b0 ' – jarryd

+0

Я отредактировал свой вопрос. пожалуйста, посмотрите – jarryd

+0

См. мой отредактированный ответ выше. – lxt