二元运算符 + 不能应用于两个 int 操作数

Binary operator + cannot be applied to two int operands

您好,我对这段代码有疑问:

1)

let label = "The width is "
let width = 94
let widthLabel = label + String(width)

2)

let height = "3"
let number = 4
let hieghtNumber = number + Int(height)

第一部分工作得很好,但我不明白为什么第二部分不行。我收到错误 'Binary operator "+" cannot be applied to two int operands',这对我来说意义不大。有人可以帮我解释一下吗?

您需要的是:

let height = "3"
let number = 4
let heightNumber = number + height.toInt()!

如果你想从 String 得到一个 Int 你使用 toInt().

1) 第一个代码有效是因为 String 有一个采用 Int 的初始化方法。然后上线

let widthLabel = label + String(width)

您正在使用 + 运算符连接字符串以创建 widthLabel.

2) Swift 错误消息可能具有误导性,实际问题是 Int 没有 init 方法需要 String。在这种情况下,您可以在 String 上使用 toInt 方法。这是一个例子:

if let h = height.toInt() {
    let heightNumber = number + h
}

您应该使用 and if let 语句来检查 String 是否可以转换为 Int 因为 toInt 将 return nil如果失败;在这种情况下强制展开会使您的应用程序崩溃。请参阅以下示例,了解如果 height 无法转换为 Int 会发生什么情况:

let height = "not a number"

if let h = height.toInt() {
    println(number + h)
} else {
    println("Height wasn't a number")
}

// Prints: Height wasn't a number

Swift 2.0 更新:

Int 现在有一个采用 String 的初始化程序,使示例 2(见上文):

if let h = Int(height) {
    let heightNumber = number + h
}