当我尝试以下操作时:
var somestring = "5"
var somenumber = 2
var newnumber:Int = Int(somestring) + somenumber
我收到此错误:
二元运算符'+'不能应用于两个Int操作数
我做错了什么?添加两个Ints不应该'+'有效吗?
答案 0 :(得分:5)
这是一个非常奇怪的错误消息。实际问题是你不能简单地用字符串构造Ints。正确的方法是使用toInt
方法,如下所示:
var newnumber:Int = something.toInt()! + somenumber
请注意,toInt
会返回一个用!
打开的可选项。如果您不确定字符串是否表示整数,则还需要添加错误处理。
答案 1 :(得分:3)
您应该考虑使用nil coalescing operator" ??"尝试从字符串中提取值时返回0而不是nil:
let someString = "5"
let someNumber = 2
let newNumber = (someString.toInt() ?? 0) + someNumber
println(newNumber) // 7
let anotherString = "a"
let anotherNumber = (anotherString.toInt() ?? 0) + someNumber
println(anotherNumber) // 2
更新: Xcode 7.1.1•Swift 2.1
let someString = "5"
let someNumber = 2
let newNumber = (Int(someString) ?? 0) + someNumber
print(newNumber) // 7
let anotherString = "a"
let anotherNumber = (Int(anotherString) ?? 0) + someNumber // 2