12

What would be the shortest/cleanest way to convert an Optional Number to an Optional Int in Swift?

Is there a better way than this? (see below)

let orderNumberInt : Int?
if event.orderNum != nil {
    orderNumberInt = Int(event.orderNum!)
} else {
    orderNumberInt = nil
}
Leo Dabus
  • 229,809
  • 59
  • 489
  • 571
Greg
  • 34,042
  • 79
  • 253
  • 454

5 Answers5

25

I think most easiest way is

var orderNumberInt = orderNum?.intValue

Also, you can do it like this

var orderNum:NSNumber? = NSNumber(int: 12)
var orderNumberInt:Int? = (orderNum != nil) ? Int(orderNum!) : nil
print(orderNumberInt)
George
  • 3,384
  • 5
  • 40
  • 64
Leo
  • 24,596
  • 11
  • 71
  • 92
5
let number:NSNumber? = NSNumber(integer: 125)


if let integerValue = number?.integerValue {
    print(integerValue)
}

let integerValue = number?.integerValue ?? 0
Leo Dabus
  • 229,809
  • 59
  • 489
  • 571
2
orderNumberInt = orderNum?.intValue

This is the best way to do it in Swift.

Reference: https://developer.apple.com/documentation/foundation/nsnumber/1412554-intvalue

Ankit Rathi
  • 161
  • 1
  • 5
0

You can use if let syntax

    var number: NSNumber?
    if let value = number as? Int {
        // get int value
    } else {

    }
Jintin
  • 1,426
  • 13
  • 22
0

I am using this simple conversion:

// lets consider following vars
var nsNum: NSNumber?
var oiNum: Int? // oi - optional Int

NSNumber to optional Int?

nsNum = NSNumber.init(value: 18)
oiNum = nsNum as? Int

optional Int? to NSNumber

oiNum = 19
nsNum = oiNum as NSNumber?

p.s. I am new to swift, so if something wrong, feel free to correct :-)

Abduliam Rehmanius
  • 928
  • 12
  • 23