2010-04-12 4 views
1

Le problème est quand de selectedSegmentIndex n'est pas sélectionné: "UISegmentedControlNoSegment" alias "-1".Comment stocker l'état UISegmentedControle dans NSUserdefaults

Les autres états (0, 1, 2, etc.), je peux stocker comme Entiers et extraient avec

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

Mais -1 est pas NSInteger.

J'ai également essayé d'enlever le nombre entier des NSUserdefaults mais une demande retournerait un "0", qui n'est pas acceptable.

Alors, y a-t-il un autre moyen facile?

Répondre

2

-1 est un nombre entier, c'est un nombre entier négatif. Vous devriez pouvoir stocker ceci dans NSUserDefaults.

+0

Ditto. Peut-être que le PO confond NSInteger avec NSUInteger? – Amagrammer

+0

Si -1 est récupéré en tant qu'int int non signé, l'OP peut signaler l'obtention de MAX_INT. –

2

Vous devez utiliser NSNumber, qui est une représentation d'objet de valeurs de types numérique et booléen communs, par ex. définir:

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

Pour récupérer:

NSInteger defaultCarSegmentedControlSelectedIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:kDefaultCarSegmentedControlState] intValue]; 
0

Vous avez raison Ben, -1 est indead un entier. Et il est stocké après tout. J'ai fait un NSLog à ce sujet. Stupide je n'ai pas essayé ça. Je n'ai pas trouvé de documentation claire à ce sujet.

Donc probablement mon problème est quelque part els. Je suppose que votre réponse fonctionne aussi, Alex.

Merci de votre aide