NSUserDefaults: Quelle est la méthode + resetStandardUserDefaults bon? Comment puis-je fournir « les paramètres du système »?

StackOverflow https://stackoverflow.com/questions/898301

Question

Je veux que l'utilisateur soit en mesure de faire des préférences comme les couleurs, les images, etc. préférees Quand j'utilise NSUserDefaults pour cela, au premier démarrage de l'application il n'y aura pas de préférence, non? Donc, chaque fois que je veux obtenir une préférence comme

NSInteger avatarID = (NSInteger) [[NSUserDefaults standardUserDefaults] objectForKey: @ "avatar"];

Je dois vérifier si elle est nulle, puis utiliser ma préférence système. Mais je l'ai vu dans la documentation: + resetStandardUserDefaults

Y at-il deux branches de défaut enregistrées quelque part? Ceux de l'utilisateur, et ceux du développeur?

Était-ce utile?

La solution

Oui, mais il est un peu différent de ce que vous faites. NSUserDefaults a la méthode registerDefaults, qui vous permet de renseigner les paramètres par défaut « blanc » d'un NSDictionary avec les valeurs que vous fournissez. Mettez cela dans la + méthode initialize dans votre contrôleur de l'application, et vous saurez les valeurs par défaut sont raisonnables. Si l'utilisateur objet par défaut trouve une valeur « réelle » pour une clé, soit celle définie lors du lancement de l'application en cours ou chargé à partir du disque, il faudra toujours un précédent sur ce que vous avez fournis dans registerDefaults. resetStandardUserDefaults supprimera le défaut utilisateur partagé objet de la mémoire et annuler toute personnalisation que vous avez fait à elle, ce n'est pas quelque chose que vous aurez besoin de fournir des valeurs par défaut.

De plus, gardez à l'esprit que vous ne pouvez pas simplement jeter un objet à une valeur NSInteger primitive que vous faites, vous allez finir avec un nombre représentant l'emplacement mémoire du pointeur de l'objet. Soit utiliser le integerForKey: de NSUserDefault pour obtenir une directement primitive, ou utiliser objectForKey: pour obtenir une NSNumber et utiliser integerValue pour obtenir la valeur primitive.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top