UILabelとUITextFieldとUITextViewのtextプロパティの持ち方がそれぞれ想像していたものと違かったのでTipsとしてまとめます。
普段UILabelを使っているとtextプロパティはOptional型ですし、nilが入るものと当然のように思っていました。
しかしUITextFieldとUITextViewは若干挙動が異なっていたのでまとめます。
実行環境はXcode7.1.1のPlaygroundでやりました。
UILabel
let label = UILabel()
label.text
結果:nil
UILabelのtextプロパティはString?なのでnilが入ります。
UITextField
let textField = UITextField()
textField.text
結果:""
UITextFieldのtextプロパティもUILabel同様String?なのでnilが入るのかと思っていたら取得する際には内部的に勝手に空文字が入る仕様のようです。
念のためtextを表示する直前にtextField.text = nil
としても同じ結果でした。
UITextView
let textView = UITextView()
textView.text
結果:""
じゃあUITextViewはどうだろう?と見てみると、これのtextプロパティはString!でした。
そもそもnilが入らない挙動のようです。
まとめ
UITextFieldのtextプロパティを取得するときには空文字が入るというところが今回のミソかと思います。
if textField == nil {}
やtextField.isEmpty
などの条件を使うときに注意が必要かもしれません。:)