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{
}