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