我有一个从密钥库填充的变量,当递增时,会出现一个错误: "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.
您正在尝试向a添加值let而let是常量,let在初始化之后无法为a赋值.
Apple文档:
常量和变量将名称(例如maximumNumberOfLoginAttempts或welcomeMessage)与特定类型的值(例如数字10或字符串"Hello")相关联.一旦设置了常量值,就不能更改常量,而变量可以在将来设置为不同的值.
var
Run Code Online (Sandbox Code Playgroud)
是你想要的
使用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)