LoginSignup
2
0

More than 5 years have passed since last update.

SwiftのOptional型なStringを連結させる

Last updated at Posted at 2018-11-13

nilが入ってくるかもしれないStringの変数aとbを連結させたい場面があったのでメモ

やりたかったこと

let a:String? = "Hello"
let b:String? = nil

print(a + b) //エラー

こんな感じで(実際にはAPIとかから値を取得してくるときにnilが帰ってくるかもしれない状況)OptionalなString同士を連結させて、片方がnilな場合はそれを無視し、nilでない方だけ出力したかった。
上記の例だと、実行結果を Hello としたい。
当然、a、bどっちもOptionalなのでアンラップしてくれとエラーが出る。 Value of optional type 'String?' must be unwrapped to a value of type 'String'

解決方法

let a:String? = "Hello"
let b:String? = nil

print("\(a ?? "")\(b ?? "")")

実行結果

Hello

こんな感じで、バックスラッシュ + カッコ で解決。
\(hoge) は、文字列の中に変数を展開する方法。

hoge ?? "piyo" は、 hoge がnilだったときにデフォルト値( piyo )を設定するよという書き方。
今回はnilのときは無視したかったので、デフォルトは空文字とした。

例えば、

let a:String? = "Hello"
let b:String? = nil

print("\(a ?? "")\(b ?? " world")")

このようにすると、bのデフォルトがworldになるので、実行結果は

Hello world

となる。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0