NSUserDefaults всегда возвращает 0, в симуляторе и устройстве - PullRequest
1 голос
/ 14 апреля 2010

У меня в приложении для iPhone есть набор настроек со следующим списком PLIST:

Type: PSMultiValueSpecifier
Title: Within (Kilometres)

DefaultValue: Number: 1
Titles: Array:
    Item 1: Number: 1
    Item 2: Number: 2
Values: Array:
    Item 1: Number: 1
    Item 2: Number: 2
Key: String: km

Тогда в моем коде у меня есть:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
NSInteger choiceOne = [defaults integerForKey:@"km"];

choiceOne всегда равно 0.

Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 14 апреля 2010

Вы действительно пытались запустить приложение «Настройки» и выбрать «Внутри», а затем вернуться в приложение, чтобы проверить? Приложение не будет принимать значение по умолчанию автоматически.

Вы можете проверить, действительно ли ключ существует с

NSNumber* obj = [defaults objectForKey:@"km"];
NSInteger choiceOne;
if (obj == nil) {
  choiceOne = 1; 
  [defaults setInteger:choiceOne forKey:@"km"];
} else {
  // check whether obj really implements -integerValue if needed.
  choiceOne = [obj integerValue];
}

Или просто установите значение 1, если оно выходит за пределы ожидаемого диапазона.

...