是否可以在 iOS swift 中递增 NSNumber 变量?
Is it possible to increment a NSNumber variable in iOS swift?
我在 iOS swift 项目中使用了核心数据并将变量声明为 Int32
,在 class 文件中它被初始化为 NSNumber
当我尝试通过为 class 创建一个对象来增加变量时,它表明二元运算符 += 不能应用于 NSNumber
。是否可以增加 NSNumber
或者我应该选择 Int16
或 Int64
来访问变量。
这里有三个不同的答案,从简洁到冗长:
鉴于 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)
我在 iOS swift 项目中使用了核心数据并将变量声明为 Int32
,在 class 文件中它被初始化为 NSNumber
当我尝试通过为 class 创建一个对象来增加变量时,它表明二元运算符 += 不能应用于 NSNumber
。是否可以增加 NSNumber
或者我应该选择 Int16
或 Int64
来访问变量。
这里有三个不同的答案,从简洁到冗长:
鉴于 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)