iOS Fatal error: Unexpectedly found nil while unwrapping an Optional value 解決
問題の箇所、oosakaの最後に空白が入っている。
ジオコーディングの問題の箇所
override func mapAgent( _ mapAgent: MsMapAgent, detailedInfoRequested datPerson: DatPerson) { // 訪問先データへ:ピンが示す訪問先を渡す performSegue(withIdentifier: "toPersonDataPhn", sender: datPerson) } override func mapAgent(_ mapAgent: MsMapAgent, showGoogleMap datPerson: DatPerson) { let jusho = datPerson.jusho ?? "" let url = jusho != "" ? URL(string:"comgooglemaps://?q=\(jusho)¢er=\(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(url.absoluteString) } }) } else { MsAlert.confirmOk(self, "Cannot open Google Maps") } }
パーセントエンコードで解決できそう
解決 addingPercentEncoding関数を利用
override func mapAgent(_ mapAgent: MsMapAgent, showGoogleMap datPerson: DatPerson) { //jushoがあるならアンラップしてurlStringに代入 なければエルビス演算子 let urlString: String = datPerson.jusho ?? "" //jushoには、パーセントエンコーディングして代入 そうでなければ ""を代入 //addingPercentEncodingはオプショナル型なのでアンラップする必要がある let jusho: String = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "" let url = jusho != "" ? //ここで最後に空白が追加されていた。それが問題だった。jushoにパーセントエンコードして代入したのでOK! URL(string:"comgooglemaps://?q=\(jusho)¢er=\(datPerson.latitude),\(datPerson.longitude)&zoom=14&views=traffic")! : URL(string:"comgooglemaps://?center=\(datPerson.latitude),\(datPerson.longitude)&zoom=14&views=traffic")!
チェックしてみる
今度は"Oosaka%20"となっている。空白がきちんとエンコードされている