Comment faire pour incrémenter une NSNumber
Comment incrémenter une NSNumber?
c'est à dire myNSNumber++
- Souvenez-vous: lors de l'utilisation de
NSNumber *
, toujours vérifier pour voir si les types primitifs suffira. - Je suis surpris qu'il n'y a pas de réponse, la fourniture rapide/optimisé façon de le faire, tout simplement parce qu'à l'augmentation de la valeur que vous avez besoin d'interroger,de combiner et de créer un nouvel objet, donc faire en boucle peut prendre beaucoup de temps.
Vous devez vous connecter pour publier un commentaire.
Mise à jour: pour info, personnellement, j'aime BoltClock et DarkDusts une ligne de réponses mieux. Ils sont plus concis, et ne nécessitent pas de variables supplémentaires.
Afin d'incrémenter un
NSNumber
, vous allez avoir à obtenir sa valeur, augmentation, et de le stocker dans un nouveauNSNumber
.Par exemple, pour un
NSNumber
de la détention d'un nombre entier:Ou pour un
NSNumber
la tenue d'un nombre à virgule flottante:...
stand for? C'est un pseudo-code de référence de la droite? XCode n'est pas...
...
est juste un espace réservé pour n'importe quel nombre que vous voulez.NSNumber
objets sont immuables; le meilleur que vous pouvez faire est de saisir la valeur primitive, l'incrémenter enrouler ensuite le résultat dans son propreNSNumber
objet:Pour toute personne qui est à l'aide de la dernière version de Xcode (à écrire ce que de la version 4.4.1, SDK 5.1), avec l'utilisation de littéraux d'objet, vous pouvez nettoyer le code, même un peu plus...
Encore une sorte de douleur à traiter avec le boxing et unboxing tout pour faire des opérations simples, mais il est de mieux en mieux, ou au moins plus courte.
NSNumbers sont immuables, vous devez créer une nouvelle instance.
De les mettre tous ensemble, et vous avez:
NSNumber
objets sont immuables(?)J'aime le point de l'expression parce qu'elle est plus concise et c'est pourquoi IOS appuie en premier lieu:
Si vous l'utilisez pour stocker une valeur intégrale:
Pour virgule flottante trucs la réponse courte est la suivante, mais c'est une mauvaise idée de faire cela, vous perdrez en précision et si vous le faites tout type de comparaison, plus tard, comme [myNSNumber isEqual:@(4.5)] vous risquez d'être surpris:
Si vous avez besoin de faire des maths sur les nombres à virgule flottante représentées comme des objets Objective-C (c'est à dire si vous avez besoin de les mettre dans des tableaux, dictionnaires, etc.) vous devez utiliser
NSDecimalNumber
.L'utilisation d'une catégorie à l'aise d'utiliser à l'avenir. Voici une idée de base.
Beaucoup de bonnes infos dans les réponses à cette question. J'ai utilisé la réponse sélectionnée dans mon code et ça a fonctionné. Puis j'ai commencé à lire le reste des postes et simplifié le code beaucoup. C'est un peu plus difficile à lire si vous n'êtes pas familier avec les changements de notation, qui ont été introduites dans Xcode 5, mais c'est beaucoup plus propre. Je pourrais sans doute le faire seulement une ligne, mais il est un peu trop dur de comprendre ce que je fais.
Je suis stocker un NSNumber dans un dictionnaire et je veux incrémenter. - Je l'obtenir, convertir un int, il incrément lors de la conversion à un NSNumber, puis de le remettre dans le dictionnaire.
Ancien Code
Nouveau code