おちゃめはちもく

最近swiftを始めたので、メモ的な感じで更新していきたいと思っています。社会人1年目、趣味囲碁。

swiftで if let を使う理由

swiftでnull(nil)チェックを行う際に、下記のようにしてチェックをする事が多いと思います。

if let hoge = nilValue {
    //nilじゃなかったらー
}

この場合、nilValueがnilじゃなかったら中に入るのはわかるのですが、別に下記のように普通にnullチェックしてもいいんじゃあないかって初心者の僕は思うんですよね

if nilValue != nil {
    //nilじゃなかったらー
}

上記の2つとも動作的には同じ(たぶん)なはずなので、わざわざわかりにくい if let の方を使う必要ってなんなんだろうなって思ってたんですが、下記のように、ifの中でnullチェックしたものを使う場合に便利なんですよね。

if let poge = controller.navigationController {
    poge.hidesBarsOnSwipe = true
    poge.hidesBarsOnTap = true
    poge.navigationBarHidden = false
    poge.popToRootViewControllerAnimated(true)
}

上記を if let なしで書くと、下記のようになります。

controller.navigationController?.hidesBarsOnSwipe = true
controller.navigationController?.hidesBarsOnTap = true
controller.navigationController?.navigationBarHidden = false
controller.navigationController?.popToRootViewControllerAnimated(true)

もちろんこれでも動作はするのですが、4度のアンラップ(?)を行ってしまっています。さらに、controller.navigationControllerを何度も書かなくて済みます。

【まとめ】 if let を使う理由は、nullチェックを行った変数をifの中で使用する際に便利だからです。

※説明が間違っている場合や他にも理由がある場合は教えていただけると助かります。

参考 www.touch-code-magazine.com