Berny Rayen
Berny Rayen

Reputation: 87

Is it possible to increment a NSNumber variable in iOS swift?

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

Answers (4)

Daniel Sumara
Daniel Sumara

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

Wyetro
Wyetro

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

Warif Akhand Rishi
Warif Akhand Rishi

Reputation: 24248

var number = NSNumber(integer: 10)
number = number.integerValue + 1

Upvotes: 2

gurmandeep
gurmandeep

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

Related Questions