Как сохранить состояние UISegmentedControle в NSUserdefaults - PullRequest
1 голос
/ 13 апреля 2010

Проблема в том, что de selectedSegmentIndex не выбран: «UISegmentedControlNoSegment» псевдоним «-1».

Другие состояния (0, 1, 2 и т. Д.) Я могу сохранить в виде целых чисел и получить с помощью

carTypeSegmentedControl.selectedSegmentIndex = [defaults integerForKey:@"typeOfCar"];

Но -1 не является NSInteger.

Я также пытался удалить Integer из NSUserdefaults, но запрос вернул бы «0», что недопустимо.

Итак, есть ли другой простой способ?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Вам необходимо использовать NSNumber, который представляет собой объектное представление значений общих числовых и логических типов, например, установить:

[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:-1] forKey:kDefaultCarSegmentedControlState];

Для получения:

NSInteger defaultCarSegmentedControlSelectedIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:kDefaultCarSegmentedControlState] intValue];
2 голосов
/ 13 апреля 2010

-1 - это целое число, это отрицательное целое число. Вы должны быть в состоянии сохранить это в NSUserDefaults.

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

Вы правы, Бен, -1 - это целое число. И это хранится в конце концов. Я сделал NSLog по этому вопросу. Глупо, я не пробовал это. Я не нашел четкой документации по этому вопросу.

Так что, вероятно, моя проблема где-то еще.

Полагаю, ваш ответ тоже работает, Алекс.

Спасибо за помощь

...