无法在swift中增加数字

kri*_*orn 2 swift

我有一个从密钥库填充的变量,当递增时,会出现一个错误: "NSNumber不能转换为@lvalue UIint8"

if let bankbalance: AnyObject? = keystore.objectForKey("coinbalance"){
   let mybalance = bankbalance as NSNumber
    mybalance += 50 //this line gives the error 
}
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是可转换为UIint8,以便我可以添加到我的变量?我试过INT,Float,double.

Bas*_*Bas 8

您正在尝试向a添加值let而let是常量,let在初始化之后无法为a赋值.

Apple文档:

常量和变量将名称(例如maximumNumberOfLoginAttempts或welcomeMessage)与特定类型的值(例如数字10或字符串"Hello")相关联.一旦设置了常量值,就不能更改常量,而变量可以在将来设置为不同的值.

var 
Run Code Online (Sandbox Code Playgroud)

是你想要的


Mit*_*oto 5

使用var.因为let意味着常量.

var mybalance = bankbalance as NSNumber
Run Code Online (Sandbox Code Playgroud)

但是NSNumber是一个Object,并且无法分配mybalance.integerValue.

if let bankbalance: AnyObject? = keystore.objectForKey("coinbalance"){
    let mybalance: NSNumber = bankbalance as NSNumber
    var b = mybalance.integerValue + 50;
}
Run Code Online (Sandbox Code Playgroud)