SWift ??とは

??は中値演算子という

オプショナル型が値を持っていれば、それをラップして代入。

持っていなければ、右辺を代入する。

let hoge:Int?
hoge = 1
let fuga = hoge ?? 3

print(fuga)
=>1

値が入っているので1が出力される

let hoge:Int?
hoge = nil
let fuga = hoge ?? 3

print(fuga)
=>3

値が入っていないので??中値演算子の右辺3が代入されている

実例

   override func mapAgent(_ mapAgent: MsMapAgent, showGoogleMap datPerson: DatPerson) {
//datPerson.jusho があるならラップしてjushoへ代入 そうでなければ""を入れなさい
        let jusho = datPerson.jusho ?? ""
//urlにはjushoを代入
        let url = jusho != "" ?
            URL(string:"comgooglemaps://?q=\(jusho)&center=\(datPerson.latitude),\(datPerson.longitude)&zoom=14&views=traffic")!
            :
            URL(string:"comgooglemaps://?center=\(datPerson.latitude),\(datPerson.longitude)&zoom=14&views=traffic")!
        if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
//            UIApplication.shared.openURL(url)
            UIApplication.shared.open(url, options: [:], completionHandler: {(success) in
                if (success){
                    NSLog("success")
                }
            })
        } else {
            MsAlert.confirmOk(self, "Cannot open Google Maps")
        }
    }