Swiftでoptionalを使っている場合にアンラップをするのは危険とこの記事で言ったけど、それを回避する方法を書いておく。
まずは単純な方法を書く。
nilチェックをする方法
1 2 3 4 5 6 7 8 9 10 |
var str: String? = "hoge" var str2: String? = nil if str != nil { print(str!.uppercased()) // "HOGE" } if str2 != nil { print(str2!.uppercased()) // 動作しない } |
単純にnilじゃなければ、実行するという形。
nilチェックをしてるので、アンラップしても落ちることはないはずだが、極めて冗長。
ので、下の方法の方がスマート。
オプショナルチェーン(Optional Chaining)を使う方法
1 2 3 4 5 |
var str: String? = "hoge" var str2: String? = nil print(str?.uppercased()) // Optional("HOGE") print(str2?.uppercased()) // nil |
こう書く(変数名の後に?をつける)ことで
- nilの場合は何もしない
- nil以外の場合に処理を実行する
という意味で書くことができる。
いろんな言語でnilやnullチェックがあるけど、スマートな方法をなるべく使っていこう。