Сохранение идентификатора Google Places и передача в UIView
У меня возникли проблемы с сохранением сведений о месте из Google Мест на карте. Я могу построить приложение нормально, но затем вылетает, когда я выбираю место из GMSAutocompleteViewController
...
"Не удалось привести значение типа 'GMSPlace' (0x10075bec8) к 'NSString' (0x1afec1398)."
Я хотел бы сохранить данные выбранного места и затем отправить эти данные для отображения в 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
,
Пытаться.
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()
}