ImplicityUnwrapOptional型な戻り値の関数の扱い方

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Class Referenceを見てて

// ImplicityUnwrapOptional<View>な型を返す関数
func hoge(_ identifier: String!) -> View!

こういう定義の関数がわりと良くあるんですが、nilをunwrapしようとすると'nilはunwrapできないぜ'的なランタイムエラーを吐くので、ああ、戻り値がImplicityUnwrapOptional型な関数は絶対値を返すという意味なんだと思ってました。

ところが、とあるAPIが普通にこのエラーで落ちたので、どうしたものかと悩んでいたのですが、対策法を見つけたのでメモします。

// hoge関数が戻り値nilの場合はimplicitryUnwrapでランタイムエラーになる
var hogeView = hoge()

// Optional Chainingでアンラップしてやると、ランタイムエラーの代わりにnilを返す
var hogeView = hoge()?
// hogeViewはnilなので、ここでnilチェックが発生する

ここまで書いておいて

やっぱりImplicityUnwrapOptionalな型を返すと定義している関数がコールしただけでランタイムエラーっていうのは微妙なので、Option型を返すって定義するべきなんじゃないかなぁと思いました。(つまりバグやと思うんですが。毎回こんなん恐れるんだったらOption採用した意味ないしね。)