是否可以在 iOS swift 中递增 NSNumber 变量?

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

我在 iOS swift 项目中使用了核心数据并将变量声明为 Int32,在 class 文件中它被初始化为 NSNumber当我尝试通过为 class 创建一个对象来增加变量时,它表明二元运算符 += 不能应用于 NSNumber。是否可以增加 NSNumber 或者我应该选择 Int16Int64 来访问变量。

这里有三个不同的答案,从简洁到冗长:

鉴于 NSNumbers 是不可变的,只需为其分配一个等于您想要的新值即可:

var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = num.integerValue + 1 // NSNumber of 2

或者您可以用另一种方式分配它:

var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = NSNumber(integer: num.integerValue + 1) // NSNumber of 2

或者您可以将 NSNumber 转换为 Int,递增 int,然后重新分配 NSNumber:

var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
var int : Int = Int(num)
int += 1
num = NSNumber(integer: int) // NSNumber of 2

使用变量。因为 let 表示常量。

var mybalance = bankbalance as NSNumber

但是 NSNumber 是一个 Object,mybalance.integerValue 不能赋值。

if let bankbalance: AnyObject? = keystore.objectForKey("coinbalance"){
    let mybalance: NSNumber = bankbalance as NSNumber
    var b = mybalance.integerValue + 50;
}
var number = NSNumber(integer: 10)
number = number.integerValue + 1

创建对象后就不可能增加 NSNumber。没有 API 允许这样做。

您必须使用新的(增加的)值重新创建 NSNumber 对象:

let number = NSNumber(int: 15)
let incrementedNumber = NSNumber(int: number.intValue + 1)