Swift比较Strings选项与非选项

时间:2016-07-26 10:24:12

标签: ios swift

比较Swift中的字符串时,可以将非可选字符串与可选字符串进行比较。

像这样(文本是可选的,它是空的):

UITextField.text == "" // True

是因为相等运算符单独解开字符串吗?

2 个答案:

答案 0 :(得分:15)

对于每个Equatable类型,还为选项定义==操作:

public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool

右侧的非可选项会自动升级为可选项。

当两个值均为==或者两者都是非零并且它们相等时,true选项会返回nil

答案 1 :(得分:2)

您的理论不适用于以下示例:

let x: String? = nil

if x == "" {
    print("True")
} else {
    print("False") //Printed
}

这里实际发生的是text属性在初始化时实际上永远不会nil - 它是一个空字符串,由documentation给出:

  

默认情况下,此字符串为@“”。

Swift编译器不会隐式解包任何选项,而是将该责任留给程序员。