在Swift中比较字符串时,你可以把可选字符串和非可选字符串进行比较。
如下所示(text是一个可选项,且为空):
UITextField.text == "" // True
因为等号运算符自动解包字符串吗?
Equatable
协议的类型,该协议也适用于可选类型的==
操作符:public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool
==
运算符时,当两个值都是nil
或两个值均不为nil
且相等时返回true
。let x: String? = nil
if x == "" {
print("True")
} else {
print("False") //Printed
}
text
属性实际上从未为nil
,而是一个空字符串,正如文档中所述:
此字符串默认为 @""。
Swift编译器不会隐式解包任何可选项,而是将这个责任留给程序员。
UITextField
类没有text
属性。 - Wain