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

时间:2016-08-18 05:47:11

标签: ios swift nsnumber

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

4 个答案:

答案 0 :(得分:10)

以下是从简洁到详细的三个不同答案:

鉴于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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

使用var。因为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;
}

答案 3 :(得分:1)

创建对象后无法增加NSNumber。没有API允许这样做。

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

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