頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Swiftのif letが気持ち悪かったけど

Swiftで最初に if let 〜 って続き方を見た時にすごく違和感があったんだけど、最近ようやくわかってきた(気がする)。

例えば画像ファイルの読み込みを例にするよ。
よくやるのはファイル名からUIImageオブジェクト作ってそこからUIImageViewオブジェクトを作って画像を表示、なんて処理。
下はUIImageオブジェクトを作る部分ね。

(1)
let image = UIImage(named:”hoge.png”)
//処理


(2)
if let image = UIImage(named:”hoge.png”) {
//処理
}

named: ってメソッドは指定する画像ファイルがなかったらnilを返してくるのよ。そりゃそうよね、文字列を間違えることだってあるだろうから、このメソッドがnilを返しうるってのは納得できる(というかリファレンスにもはっきり書いてるし)。

上の(1)の場合だと、imageの型はUIImageではなく、UIImage?になるのよ。
UIImage?だとUIImageクラスのプロパティやメソッドにアクセスできないんだ。やろうとすると書いてる時にXcodeに怒られる(コンパイルエラー)。
エラーメッセージ

ところが(2)のようにif let 〜 みたいに書くと、imageの型はUIImageになってくれるんだわ!
これだとimageに!とか付けなくてもアクセスできる。


この辺りのSwiftの型推論の挙動を知ってからは if let 〜 って書き方がスッキリして見えるから不思議だわ。


もっともこういうとこで引っかかったのは俺がObjective-Cでnilチェックをちゃんとしてこなかったからだな。Appleのサンプルコードなどを見てるとホント実感するよ。悔い改めます。

<< SwiftのExtensionでプロパティを追加  TopPage  GarageBandで遊んでみる >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/944-0507c712




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad