如何将 Swift 可选的 NSNumber 转换为可选的 Int? (我的代码有什么改进吗?)

How to convert Swift optional NSNumber to optional Int? (any improvements on my code?)

在 Swift 中将可选数字转换为可选整数的 shortest/cleanest 方法是什么?

还有比这更好的方法吗? (见下文)

let orderNumberInt : Int?
if event.orderNum != nil {
    orderNumberInt = Int(event.orderNum!)
} else {
    orderNumberInt = nil
}

你可以使用 if let 语法

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

    }

我认为最简单的方法是

var orderNumberInt = orderNum?.intValue

另外,你也可以这样做

var orderNum:NSNumber? = NSNumber(int: 12)
var orderNumberInt:Int? = (orderNum != nil) ? Int(orderNum!) : nil
print(orderNumberInt)
let number:NSNumber? = NSNumber(integer: 125)


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

let integerValue = number?.integerValue ?? 0

我正在使用这个简单的转换:

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

NSNumber 到可选的 Int?

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

可选 Int?到 NSNumber

oiNum = 19
nsNum = oiNum as NSNumber?

p.s。我是 swift 的新手,所以如果有什么不对的地方,请随时纠正 :-)

orderNumberInt = orderNum?.intValue

这是 Swift 中最好的方法。

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