【Swift】オプショナルチェーンってなに?意味から使い方までわかりやすく解説!

B!

「データがあるときだけ処理したいけど、nil(値なし)のときはスルーしたい…」

そんなときに大活躍するのが オプショナルチェーン(Optional Chaining) という便利な仕組みです!

Swiftを使っていると、「値があるかもしれないし、ないかもしれない」っていう場面がたくさん出てきますよね。

そのたびに if letguard let を使ってチェックするのも大変…

でもオプショナルチェーンを使えば、1行でスッキリ、安全にアクセスできる ようになるんです!

この記事では、Swift初心者の方にもわかりやすく、意味・使い方・具体例 をたっぷり使って解説していきます!

オプショナルチェーンってなに?

オプショナルチェーンは、オプショナル型のプロパティやメソッドに「?」をつけて、安全にアクセスする書き方です。

例えばこんなコード:

これ、もし userprofilename のどれかが nil だったら、自動的に nameLengthnil になります。

エラーにならず、そっと nil を返してくれる のがポイント!

どうやって使うの?

基本の書き方はこれです。

「?」をはさむことで、値があるときだけ実行されてなければスルーされます。

「.」の代わりに「?.」を使う、これだけ覚えればOK!

具体例①:ユーザーの名前を取得したい!

たとえば、こんなデータ構造があるとします。

このとき、userprofilename とたどって、名前を取得したいけど、profile が nil かもしれない…

そんなときはこう書きます。

これだけで、profile が存在する場合だけ name を取得できます。

もし profile が nil なら、userName は自動的に nil になります。

具体例②:メソッドも呼び出せる!

オプショナルチェーンは、プロパティだけじゃなくメソッドにも使えます!

doc が nil なら何も起こらずスルー。

docに値がある場合のみ printTitle() が実行されます。

具体例③:複数をつなげてもOK!

オプショナルチェーンは、何段でも続けて書けます

このように、途中のどこかが nil でも、全部安全にチェックしながら進んでくれるんです!

具体例④:代わりの値を入れたいときは?

?? を使えば、nil のときに代わりの値を入れることもできます!

name が存在すればその文字数、なければ、??の後に指定した 0 が入ります。

「nilだったら◯◯を使いたい」というときにとっても便利です!

オプショナルチェーンと if let / guard let の違いは?

if letguard let では値を取り出して別の変数に入れてから使います。

こっちのほうが中で複雑な処理をしたいときには向いています。

一方、オプショナルチェーンは「ただ値を取り出したい」「ちょっと使いたい」時にとても便利です!

まとめ

  • オプショナルチェーンは「?.」で安全に値にアクセスできる機能!
  • 値があるときだけ処理して、なければ nil を返してくれる!
  • プロパティにもメソッドにも使える!
  • ネストが深くても一気に書ける!
  • ?? でデフォルト値も簡単に設定できる!

Swiftでは、「値があるかどうか」を意識することがとても大事です。

オプショナルチェーンを使えば、安全・簡単・スマートにコードを書けるようになります!

「nilチェックでごちゃごちゃする…」と感じたことがある人はぜひオプショナルチェーンを使ってみてくださいね。

参考リンク

Apple公式ドキュメントSwift Language Guide - Optional Chaining

 

最新の記事はこちらから