こんにちは トクハラです。
ちなみに中値演算子と言います。
左辺が値を持っていなければ、右辺を代入します。
公式サイトリファレンス
まず実際のソースを見てみましょう。
#datperson.jushoがあればjushoに代入,nillなら""空白を代入
let jusho = datPerson.jusho ?? ""
ここはdatPerson.jushoがオプショナル型なので、nilが入っているかもしれない。
だから??でチェックします。
強制アンラップというのがあります。
エイッと、中身を開いてしまうわけですね。
もともとラップとうのは、包み込むという意味ですので、
アンラップは逆の意味になります。
!を利用します
上記で言うなら
let jusho = datPerson.jusho!
これでもできます。できるとうのは、文法エラーにならないだけです。
だから、datPerson.jushoがnillだったら,落ちてしまいます。
怖いですね。
値が入っていることが確実なものだけ利用します。
@IBOutletなどで使っていますね。
あれは、StoryBoardで接続しているので、インスタンスが存在することが担保されているからです。
Swiftはオプショナルがあり、安全な設計となっていますが、その取り出し方法は、いろいろな方法があります。
またまとめていきますので、ご要望があれば、下記にお願いします。