J'ai utilisé des données de base dans mon projet swift iOS et déclaré une variable comme Int32
, dans le fichier de classe il a été initialisé à NSNumber
et pendant que j'ai essayé d'incrémenter la variable en créant un objet pour cette classe, il montre que l'opérateur binaire + = ne peut pas être appliqué sur NSNumber
. Est-il possible d'incrémenter le NSNumber
ou devrais-je choisir Int16
ou Int64
pour accéder à la variable.Est-il possible d'incrémenter une variable NSNumber dans iOS swift?
Répondre
est ici trois réponses différentes de succinctes à bavard:
Étant donné que les NSNumbers sont immuables, attribuer simplement une nouvelle valeur égale à ce que vous voulez:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = num.integerValue + 1 // NSNumber of 2
Ou vous pouvez l'assigner une autre chemin:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = NSNumber(integer: num.integerValue + 1) // NSNumber of 2
Ou vous pouvez convertir le NSNumber
à un Int
, incrémenter l'int, et réaffecte les NSNumber
:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
var int : Int = Int(num)
int += 1
num = NSNumber(integer: int) // NSNumber of 2
Les trois réponses ont fonctionné correctement .. Merci beaucoup pour vos réponses. –
Utilisez var. Parce que let veut dire des constantes.
var mybalance = bankbalance as NSNumber
Mais NSNumber est un objet et mybalance.integerValue ne peut pas être affecté.
if let bankbalance: AnyObject? = keystore.objectForKey("coinbalance"){
let mybalance: NSNumber = bankbalance as NSNumber
var b = mybalance.integerValue + 50;
}
var number = NSNumber(integer: 10)
number = number.integerValue + 1
Il est impossible d'incrémenter une NSNumber une fois que l'objet est créé. Il n'y a pas API qui permet cela.
Vous devez recréer l'objet NSNumber avec un nouveau (incrémentée) Valeur:
let number = NSNumber(int: 15)
let incrementedNumber = NSNumber(int: number.intValue + 1)
objets 'NSNumber' sont immuables. Vous devez créer une nouvelle instance avec une nouvelle valeur basée sur la valeur d'origine. – rmaddy
Gracieux déplacer par la personne qui a voté vers le bas toutes les réponses. – WMios