2011-12-21 1 views
0

Je dois parcourir toutes les clés de mon NSUserDefaults et les transférer dans un autre format. Plus tard, je vais vouloir les transférer, par programme.NSUserDefaults setObject et IntegerForKey, utilisez sur la même clé, sinon comment puis-je contourner?

j'ai beaucoup de clés et je n'ai aucune façon dans ma convention de nommage ou par d'autres moyens pour déterminer si je setObject ou setInteger etc.

Si je setObject cela me permettra d'utiliser integerForKey sur cette clé?

Si je ne peux pas vouloir puis-je utiliser à la place?

Répondre

0

Je suis sûr que l'utilisation de setObject vous permettra d'utiliser integerForKey plus tard.

Une autre façon de procéder pourrait être d'ajouter une plist à votre projet et de tout y stocker. C'est fondamentalement la même chose que NSUserDefaults, seulement vous le ferez tous à la main. Vous pouvez simplement lire le contenu d'un plist à un NSArray ou un NSDictionary (selon ce que vous avez choisi de le construire avec en premier lieu) et ensuite accéder aux membres dont vous avez besoin de cet objet.

Espérons que cela aide.

+0

Je recommande de ne pas utiliser PLIST pour ce genre de problèmes. C'est une mauvaise pratique, et si vous "devez" en utiliser un, il y a probablement un défaut dans votre conception quelque part et vous devriez repenser l'implémentation. – Craimasjien

+0

Décerné pour le pour la première phrase. – Jules

1

Non, vous ne devriez pas pouvoir obtenir les bons objets si vous utilisez integerForKey:. Cependant, vous pouvez obtenir les bons objets si vous utilisez objectForKey:. C'est parce que si vous aviez utilisé setInteger:forKey:, il appelle automatiquement setObject:forKey:. Donc, il y aura un objet pour la clé. Donc, ce que vous avez à faire est de parcourir les clés, obtenir les objets en utilisant objectForKey: et le convertir en le type de données que vous voulez.

+0

Cela semble avoir fonctionné. Mais je fixe une valeur par défaut, je suppose que c'est probablement la raison? – Jules

+0

Cela devrait fonctionner de toute façon. http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/setInteger:forKey: – MadhavanRP

Questions connexes