Reputation: 87
I used core data in my iOS swift project and declared a variable as Int32
, in the class file it was initialised to NSNumber
and while I tried to increment the variable by creating a object for that class, it shows that Binary operator += cannot be applied on NSNumber
's. Is it possible to increment the NSNumber
or should I choose Int16
or Int64
to access the variable.
Upvotes: 5
Views: 4842
Reputation: 2264
It is impossible to increment an NSNumber once the object is created. There is no API that allows that.
You have to recreate the NSNumber object with a new (incremented) value:
let number = NSNumber(int: 15)
let incrementedNumber = NSNumber(int: number.intValue + 1)
Upvotes: 1
Reputation: 8588
Here's three different answers from succinct to verbose:
Given that NSNumbers are immutable, simply assign it a new value equal to what you want:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = num.integerValue + 1 // NSNumber of 2
Or you can assign it another way:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = NSNumber(integer: num.integerValue + 1) // NSNumber of 2
Or you can convert the NSNumber
to an Int
, increment the int, and reassign the NSNumber
:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
var int : Int = Int(num)
int += 1
num = NSNumber(integer: int) // NSNumber of 2
Upvotes: 12
Reputation: 24248
var number = NSNumber(integer: 10)
number = number.integerValue + 1
Upvotes: 2
Reputation: 1247
Use var. Because let means constants.
var mybalance = bankbalance as NSNumber
But NSNumber is a Object and mybalance.integerValue cannot be assigned.
if let bankbalance: AnyObject? = keystore.objectForKey("coinbalance"){
let mybalance: NSNumber = bankbalance as NSNumber
var b = mybalance.integerValue + 50;
}
Upvotes: 1