比较Swift中的字符串时,可以将非可选字符串与可选字符串进行比较。
像这样(文本是可选的,它是空的):
UITextField.text == "" // True
是因为相等运算符单独解开字符串吗?
答案 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编译器不会隐式解包任何选项,而是将该责任留给程序员。