web-dev-qa-db-fra.com

Comment utiliser un ensemble de valeurs et de valeurs à partir de paramètres

J'ai un paramètre de valeurs multiples (emplacement) défini dans mon ensemble de paramètres pour une application.
Les titres sont définis comme des titres longs, par exemple, "London" et la partie valeur du paramètre correspondant est définie sur "1".

[MODIFIER]

Pour développer cette question, je vais ajouter plus d'informations sur le paramètre de valeur multiple:

this is a screenshot of the multi value setting

Comment puis-je récupérer le titre de LONDON à la rubrique 0. Comme décrit ci-dessus, lorsque je récupère l'objet objectForKey ou valueForKey, je reçois toujours 1. Je souhaite afficher la chaîne "LONDON" du titre dans une étiquette de l'application, mais utiliser la valeur 1 dans les données de base. Remarque: j'ai défini la valeur dans les paramètres avant l'exécution de l'application afin qu'elle renvoie une valeur, mais la valeur est toujours égale à 1, car le titre ne semble pas être accessible.

24
motionpotion

Vous devez définir votre valeur "Valeur par défaut" sur "1" - Il suffit d’élaborer un élément 0 dans votre liste "Valeurs".

10
Alexander Slabinsky

J'ai rencontré la même situation et j'ai répondu à la question que cela aiderait quelqu'un.

Si je comprends bien la question, lorsque l’utilisateur sélectionne Londres dans les paramètres, la valeur par défaut est 1. Lorsque vous lisez le jeu de paramètres de locationSetting, vous obtenez la valeur 1 et non pas LONDON, mais vous souhaitez que "LONDON" soit inséré dans votre code. 1. Ce n'est pas possible avec la structure actuelle de votre plist. faites de la valeur par défaut un dictionnaire au lieu de chaîne et vous pourrez alors avoir à la fois des titres et des valeurs à l'intérieur de ce dictionnaire. vous pouvez alors récupérer le texte de la valeur sélectionnée.

4
Tamil

Les paramètres d'emplacement en tant que valeur multiple constituent un NSDictionary. Par conséquent, procédez comme suit: 

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 

NSString *value = (NSString *)location; 

Convertissez la valeur d'emplacement en NSString car vous savez qu'une chaîne doit être renvoyée.

Vous pouvez ensuite gérer le résultat comme une chaîne. La variable "valeur" renvoyée est celle qui est écrite dans la section valeur. Dans votre cas, si vous sélectionnez "Londres", vous obtiendrez la valeur "1" sous forme de chaîne. 

3
jheneghan

Si ma compréhension de votre question est correcte, vous demandez comment vous pouvez obtenir l'entrée de clé du dictionnaire d'emplacement pour la valeur choisie par l'utilisateur.

Pour les dictionnaires, il n’existe pas de méthode à usage unique. Il existe toutefois un moyen d’obtenir le même résultat en manipulant allKeys comme ci-dessous:

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 
NSArray *keys = [location allKeys];
NSString *locationIdentifier = [keys objectForIndex:[location valueForKey:@"LONDON"]];

Cela aurait pour résultat que la chaîne "LONDON" serait stockée dans la variable locationIdentifier. Ainsi, la dernière ligne, l'affectation de la chaîne, pourrait éventuellement être modifiée pour simplement avoir objectForIndex:0, mais ce n'est pas quelque chose que j'ai essayé avant donc je ne suis pas certain.

0
royalmurder