Swiftの文字列を比較する場合、オプションの文字列とオプションの文字列を比較できます。スウィフトの比較文字列オプションと非オプションの文字
ので、同じように(テキストは任意であり、それが空である):等価演算子は、それ自体で文字列をアンラップので、それが
UITextField.text == "" // True
ですか?
Swiftの文字列を比較する場合、オプションの文字列とオプションの文字列を比較できます。スウィフトの比較文字列オプションと非オプションの文字
ので、同じように(テキストは任意であり、それが空である):等価演算子は、それ自体で文字列をアンラップので、それが
UITextField.text == "" // True
ですか?
あなたの理論は、次の例では成り立たない。
let x: String? = nil
if x == "" {
print("True")
} else {
print("False") //Printed
}
ここで実際に何が起こっていることはtext
プロパティが実際に初期化時にnil
ことはありませんということです - documentationによって与えられたとして、それは、代わりに空の文字列です:
この文字列はデフォルトでは ""です。
Swiftコンパイラは暗黙的に任意のオプションをアンラップしません。その代わりに、その責任をプログラマに委ねます。
public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool
右側の非オプションが自動的に任意に昇格されます:==
操作もoptionalsのために定義されているすべてのEquatable
タイプについて
。
オプションの==
は、両方の値がnil
の場合、または両方が非nilで、等しい場合は、true
を返します。
サイドノート:オプションの引数を取る対応する*比較演算子は、Swift 3:https://github.com/apple/swift-evolution/blob/master/proposals/0121-remove-optional-comparison-operatorsで削除されます。 md。 –
は実際のコードですか? 'UITextField'クラスには' text'プロパティがありません – Wain
これは単なる例です。私はUITextFieldを初期化しており、textという属性を持っています。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/ – WYS
アンラッピングはありません。等価性はoptionalsにも定義されています。オプションは自動的にオプションに昇格することができます。 – Sulthan