2017-03-19 14 views
1

Googleプレイスの場所の詳細を保存する際に問題が発生しています。 GMSAutocompleteViewControllerから場所を選択するとアプリが正常に構築されてクラッシュする可能性があります... "'GMSPlace'(0x10075bec8)型の値を 'NSString'(0x1afec1398)にキャストできませんでした。GoogleプレイスIDを保存してUIViewに渡す

私は、選択した場所のデータを保存し、そのデータをUIViewとUITableViewに表示するように送信したいと思います。私が間違っているのかわからない...

// MARK: GOOGLE AUTO COMPLETE DELEGATE 

    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) { 

     // Do something with the selected place. 
     // A hotel in Saigon with an attribution. 
//  let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" 
     let placeID = GMSPlace.self 

     placesClient.lookUpPlaceID((placeID as AnyObject) as! String, callback: { (place, error) -> Void in 
      if let error = error { 
       print("lookup place id query error: \(error.localizedDescription)") 
       return 
      } 

      guard let place = place else { 
       print("No place details for \(placeID)") 
       return 
      } 

      print("Place name \(place.name)") 
      print("Place address \(place.formattedAddress)") 
      print("Place placeID \(place.placeID)") 
      print("Place attributions \(place.attributions)") 
     }) 

     self.dismiss(animated: true, completion: nil) 

     setupConfirmationPopUp() 

    } 

答えて

1

あなたのコード(GMSPlace.self)特定のインスタンス、GMSPlace型自体への参照を作成していません。デリゲートメソッドは、ビューコントローラがオートコンプリートできるGMSPlaceのインスタンスを返します。このインスタンスを使用すると、placeIDというプロパティからプレースIDを取得できます。

は試してみてください。

func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) { 

    // Do something with the selected place. 
    // A hotel in Saigon with an attribution. 
    // let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" 
    let placeID = place.placeID 

    placesClient.lookUpPlaceID(placeID, callback: { (place, error) -> Void in 
     if let error = error { 
      print("lookup place id query error: \(error.localizedDescription)") 
      return 
     } 

     guard let place = place else { 
      print("No place details for \(placeID)") 
      return 
     } 

     print("Place name \(place.name)") 
     print("Place address \(place.formattedAddress)") 
     print("Place placeID \(place.placeID)") 
     print("Place attributions \(place.attributions)") 
    }) 

    self.dismiss(animated: true, completion: nil) 

    setupConfirmationPopUp() 

} 
+1

placeIDのキャストを削除しなければならなかった!文字列だけど、うまくいきました! – user3708224

+0

'placeID'が' NSString'として戻ってくるので、それがまだ必要かどうかはわかりませんでした。編集時に修正されました。 –

関連する問題