LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-07-09

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採用した意味ないしね。)

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3