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
}
您应该使用andif 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
}