ifでのオプショナルバインディングについて
オプショナル型のアンラップ方法の一つ if let ~ について
確認環境
- Swiftバージョン 5.0
- XCode Version 11.4 (11E146)
オプショナル型やアンラップについては以下を参照
どこよりも分かりやすいSwiftの"?"と"!" - Qiita
基本
以下の書き方が基本です
let str:String? = "文字列" if let strUnwrap = str { // strUnwrap を使用した処理 }else{ // strUnwrap が nil の時に実行する処理 }
その他
if var でもOKです。
let str:String? = "文字列" if var strUnwrap = str { // strUnwrap を使用した処理 }else{ // strUnwrap が nil の時に実行する処理 }
複数のアンラップを行えます。
let str:String? = "文字列" let str2:String? = "文字列2" if let strUnwrap = str, let strUnwrap2 = str2 { // strUnwrapを使用した処理 label.text = strUnwrap }else{ // str or str2 のどちらか、もしくは両方が nil の時に実行される label.text = "else" }
アンラップと条件を混ぜて使用できます。
let str:String? = "テスト文字列" let a = 10 let b = 20 if let strUnwrap = str, a == b { // strUnwrapを使用した処理 label.text = strUnwrap }else{ // strUnwrapがnil もしくは a == b が false の場合に実行 label.text = "else" }
以下の記述でもエラーにならないので、 おそらくはカンマ区切りで幾つでも アンラップ や 判定条件を追加できます。
if let unLapstr = str, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true { // strUnwrapを使用した処理 }else{ }