Swift:找不到||的重载接受提供的参数

时间:2015-07-07 10:01:07

标签: ios swift boolean-expression

if(inputField == nil || numbersLabel == nil || inputField!.text! <  4 || numbersLabel!.text! <  4)

当我要运行应用程序时,显示无法找到此||提供的参数的重载。

2 个答案:

答案 0 :(得分:2)

正如Andrea指出的那样,问题是你要将字符串(text)与整数(4)进行比较,并且需要将text转换为int。

但是还可以进行另一项优化 - 你正在检查inputField是否为非零,然后强制展开它。但这不是必需的 - <是为选项定义的,因为“nil小于除了另一个nil之外的所有其他内容,否则比较非nil值”。因此,您只需编写x == nil || x! < 4而不是x < 4

因此,您可以将if声明写为:

// Swift 1.2:
if inputField?.text?.toInt() < 4 || numbersLabel?.text?.toInt() < 4 {

// Swift 2.0:
if inputField?.text.flatMap({Int($0)}) < 4 || numbersLabel?.text.flatMap({Int($0)}) < 4 {

答案 1 :(得分:1)

错误可能在这里:

inputField!.text! <  4

有一个运营商面对String vs Int并且没有。您必须转换右侧或左侧的其中一个值以匹配该类型。
试试这个:

inputField!.text!.toInt() <  4

Int(inputField!.text!) <  4