Search code examples
iosswiftnsnumber

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.


Solution

  • 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