Edited at

[Tips] UILabel, UITextField, UITextViewのちょっとした挙動の違い

More than 3 years have passed since last update.

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などの条件を使うときに注意が必要かもしれません。:)