Comment faire pour Lire une Chaîne de NSUserDefaults
J'ai un objet à la racine de plist qui stocke les objets et les clés (dont une entrée d'un utilisateur textfield). Je n'ai pas de problème d'écriture et de création de la structure; c'est d'essayer de lire les valeurs de poser problème. Ci-dessous le code que j'ai utilisé pour écrire les données, quelqu'un peut me dire comment faire pour lire la chaîne de caractères [val] et [maclé]?
merci!
#define defaultValue @"Your Name"
#define myKey @"PersonName"
- (void)textFieldAction:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *val;
//Get the new value from the textfield
val = [myTextField stringValue];
if ([val isEqualToString:defaultValue]) {
[defaults removeObjectForKey:myKey];
} else {
//[defaults setObject:val forKey:myKey];
NSDictionary *my_dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"Name", @"PersonName",
@"Email", @"PersonEmail",
@"Dept", @"PersonDept",
@"Job", @"PersonJob",
val, myKey,
@"Status", @"PersonStatus",
nil];
[defaults setObject: my_dict forKey: @"Person"];
[[NSUserDefaults standardUserDefaults] registerDefaults:my_dict];
Je voudrais remplir automatiquement le champ de texte avec le [val], pour [maclé], si l'utilisateur a l'info déjà dans le plist. Voici le code que j'utilise:
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
NSUserDefaults *defaults = [[NSUserDefaults standardUserDefaults] objectForKey:myKey];
NSString *val = [defaults stringForKey:myKey];
if (val == nil) val = defaultValue;
[myTextField setStringValue:val];
Le code de compiler?
heh. yep, il le fait avec pas de problèmes, il ne doit pas être si mal que ça, non? :-p
Ce n'est pas une application iOS, OS X.
dans mon .h fichier IBOutlet NSTextField *myTextField;
Ok, as-tu encore des problèmes?
heh. yep, il le fait avec pas de problèmes, il ne doit pas être si mal que ça, non? :-p
Ce n'est pas une application iOS, OS X.
dans mon .h fichier IBOutlet NSTextField *myTextField;
Ok, as-tu encore des problèmes?
OriginalL'auteur Devon | 2012-02-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez écrire la valeur dans
NSUserDefault
comme suit:Lire comme suit:
Sorte que vous pouvez simplifier votre code dans:
Vous pouvez définir une valeur par défaut avec le
registerDefaults:
. Et quand vous pouvez récupérer cette valeur, simplement en appelant le:Il n'aime pas la .texte — j'obtiens une erreur "Propriété" texte " qui ne trouve pas dans l'objet de type NSTextField *'
Oui, j'ai changé en
setStringValue
quand vous avez dit que ce n'était pas une application iOS 🙂GÉNIAL! fonctionne parfaitement... merci beaucoup! 😉 Je-vote de votre réponse, bien que je n'ai pas assez de poids, apparemment. Merci encore, vraiment apprécié.
OriginalL'auteur sch
Si je comprends bien, vous devriez être en mesure de faire ce que vous avez besoin simplement en faisant:
NSUserDefaults Page De Référence
Il est très improbable que c'est mal lues depuis sa fonction droite du cadre. Il est beaucoup plus probable que vous définissez de façon incorrecte. C'est difficile à dire parce que le code que vous avez posté n'est évidemment pas le code entier - il woulnd même pas compiler. Ma conjecture est que vous êtes réellement réglage de la valeur de deux fois - d'abord par [valeurs par défaut setObject...] et puis en enregistrant le dictionnaire. Vous ne devez le faire qu'une fois.
Désolé, j'ai posté le code si ça peut aider. merci!!!!
OriginalL'auteur Peter Sarnowski
OriginalL'auteur Adrian Ancuta