【Swift】Swift2.0からのエラーハンドリング:Optional Chaining

Swift2.0からのエラーハンドリング の投稿一覧

[Swift]サウンド再生を実機検証しようとしてXcode7betaでビルド失敗した時はで触れたエラーの扱い方ですが、投稿後に調べたところSwift2.0から、Xcodeで言えばXcode7beta6から変更となっていた様です。
詳しくはXcode 7 beta 6 Release Notesに記述がありました。

この辺りの関連名詞はまだまだ日本語として浸透しておらず、検索をかけてもなんだかふわふわしている印象を受けたので覚書として項目別にまとめていこうと思います。
今回はOptional Chainingについてです。

概要

オプショナルとか、オプショナル型とか、任意型変数とか、forced unwrappingとか言われているやつです。
?(question mark) と !(exclamation mark)がコードのあちこちに付いているのを見たことがあれば、それがOptionalに関連している記述である可能性があります。

Swiftでは、言語によって許されてきた変数、定数、引数へのnil値が許可されなくなりました。
このnil周りの扱いを例外的に許可し、記述しやすくする或いはコンパクトに記述するための仕組みだと私は理解しています。

構文

下記はメンバ変数の場合。ローカル変数だとこの限りではない様子。

? (question mark)

OptionalValueとして宣言する時に付ける。

OptionalValueとして宣言された変数には、nilを定義できる。

OptionalValueとして宣言された変数はif文の条件として使用できる。

! (exclamation mark)

nilである可能性はあるが、アクセス時にnilではないと確信が持てるものに付ける。

コードが実際に動いて、アクセスされた時にnilが中身だった場合はエラーになる。