Swift 二进制运算符+;不能应用于两个整数操作数

Swift 二进制运算符+;不能应用于两个整数操作数,swift,sum,operands,Swift,Sum,Operands,您好,我有一个关于此代码的问题: (一) (二) 第一部分很好,但我不明白为什么第二部分不行。我得到的错误是“二进制运算符”+“不能应用于两个整数操作数”,这对我来说没有多大意义。有人能帮我解释一下吗?您需要的是: let height = "3" let number = 4 let heightNumber = number + height.toInt()! 如果要从字符串中获取Int,请使用toInt()1)第一个代码可以工作,因为String有一个init方法,该方法采用Int。然后

您好,我有一个关于此代码的问题:

(一)

(二)

第一部分很好,但我不明白为什么第二部分不行。我得到的错误是“二进制运算符”+“不能应用于两个整数操作数”,这对我来说没有多大意义。有人能帮我解释一下吗?

您需要的是:

let height = "3"
let number = 4
let heightNumber = number + height.toInt()!
如果要从
字符串中获取
Int
,请使用
toInt()

1)第一个代码可以工作,因为
String
有一个init方法,该方法采用
Int
。然后在线上

let widthLabel = label + String(width)
您正在使用
+
操作符连接字符串,以创建
宽度标签

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

if let h = height.toInt() {
    let heightNumber = number + h
}
您应该使用and
if let
语句检查
字符串是否可以转换为
Int
,因为
toInt
如果失败,将返回
nil
;在这种情况下强制展开将使你的应用程序崩溃。请参见下面的示例,了解如果
高度
不能转换为
整数
,会发生什么情况:

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
现在有一个初始化器,它接受一个
字符串
,使示例2(见上文):


是的,我知道。但是,即使根据错误描述,能够执行该操作也是有意义的。它以某种方式将高度转换为Int。我想知道这是为什么。这是因为你想用
字符串初始化
Int
,这是不允许的。只能使用整数初始化
Int
。例如-
让a=Int(25)
。在任何情况下使用(Int)someString有意义吗。我只是被错误描述弄糊涂了,我得到的操作数是Int,这意味着高度以某种方式被强制转换为Int。不,首先,这不是Swift中强制转换的语法(您可以使用
的形式作为
,请参阅)。其次,Swift错误消息有一个很容易误导的习惯,实际问题是
Int
上没有一个
init
需要
字符串的。很好的解释!非常感谢你!我更新了我的答案,介绍了你的第一个例子。如果任何一个答案都解决了你的问题,你会认为标记一个是正确的吗?对不起,我之前没有这么做……我得找个借口说我还是新来的:)另请看答案。从本质上讲,如果A已经声明为CGFloat的Double或其他类型,并且B和C是整数,那么A=B+C将失败,并显示此错误消息,这掩盖了真正的问题和解决方案:A=Double(B+C)。此问题/答案位于谷歌搜索此错误的顶部;在某些情况下,另一个问题的答案可能更有用。
if let h = height.toInt() {
    let heightNumber = number + h
}
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
if let h = Int(height) {
    let heightNumber = number + h
}