Swiftでオプショナル型をアンラップする方法について記載します。
オプショナル型の変数は、値に nil を持つことができます。
nil の変数を使用すると実行時エラーが発生するので、オプショナル型の変数はアンラップすることで安全に使用することができます。
アンラップは用途に応じて次の3種類があります。
- 変数の値が nil 以外の場合に処理を行う。( if – let )
- 変数の値が nil の場合にデフォルト値を代入する。( ?? )
- 変数の値が nil 以外と確信できる場合、強制的にアンラップする。( ! )
以下ではそれぞれの詳細について記載します。
目次
アンラップの方法
1. 変数の値が nil 以外の場合に処理を行う( if – let )
タイトルの通り “nil 以外の場合に行いたい処理” には、if – let を使用します。
書式
if let 変数 = オプショナル型の変数 {
// nil じゃないときに行いたい処理
}
// nil じゃないときに行いたい処理
}
実行例
1 2 3 4 5 6 7 |
let opStr = Optional("abc") if let str = opStr { // nil 以外の場合に行われる処理 print(str) // abc } // print(str) ここでは 変数 str にアクセスはできない |
注意点としては、 if let で 代入した変数( 上記では str )は if – let スコープ外からはアクセスできません。
2. 変数の値が nil の場合にデフォルト値を代入する( ?? )
デフォルト値を代入するには ?? を使用します。
書式
変数 = オプショナル型の変数 ?? デフォルト値
実行例
1 2 3 |
let nilStr: String? = nil let str = nilStr ?? "abc" print(str) // abc |
3. 強制的にアンラップする( ! )
if – let は nil 以外の場合に処理を行う、?? は nil の場合にデフォルト値を代入する とオプショナル型変数を安全に扱う方法でした。
3番目の強制アンラップは、nil かもしれない・・けど、nil じゃない自信がある! という場合に使用する方法です。
もし、nil の場合は実行時エラーが発生する可能性があるので注意が必要です。
書式
オプショナル型の変数!
※ 変数名の最後に ! を付けます
※ 変数名の最後に ! を付けます
実行例
1 2 3 4 5 |
let opStr: String? = "abc" print(opStr!) // abc let nilStr: String? = nil print(nilStr!) // 実行時エラーが発生します |