Ios ViewController不符合Swift中的协议GMSAutoCompleteViewControllerDelegate
我收到错误:“ViewController”不符合以下代码中的协议“GMSAutoCompleteViewControllerDelegate”Ios ViewController不符合Swift中的协议GMSAutoCompleteViewControllerDelegate,ios,swift,google-maps,autocomplete,google-places-api,Ios,Swift,Google Maps,Autocomplete,Google Places Api,我收到错误:“ViewController”不符合以下代码中的协议“GMSAutoCompleteViewControllerDelegate” class MapViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate, GMSAutocompleteViewControllerDelegate { ... @IBAction func autocompleteClicked(sender
class MapViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate, GMSAutocompleteViewControllerDelegate {
...
@IBAction func autocompleteClicked(sender: AnyObject) {
let autoCompletController = GMSAutocompleteViewController()
autoCompletController.delegate = self
self.presentViewController(autoCompletController, animated: true, completion: nil)
}
//Handle user's selection
func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithPlace place: GMSPlace!) {
//let placeName = place.name
//let placeAddress = place.formattedAddress
//let placeAttributions = place.attributions
let placeCoordinate = place.coordinate
mapView.camera = GMSCameraPosition(target: placeCoordinate, zoom: 15, bearing: 0, viewingAngle: 0)
}
func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithError error: NSError!) {
// TODO: handle the error.
print("Error: ", error.description)
}
func wasCancelled(viewController: GMSAutocompleteViewController!) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
解决办法是什么?谢谢您可能在
GMSMapViewDelegate
协议中缺少一个必需的函数。按住Ctrl键并单击GMSMapViewDelegate
,查看列出的功能:您是否实现了所有未列为@可选的功能?如果没有,swift将不会编译。似乎您键入了一个必需的函数。didAutoCompleteWithError
func viewController(viewController: GMSAutocompleteViewController!, didFailAutocompleteWithError error: NSError!) {
// TODO: handle the error.
print("Error: ", error.description)
}
编辑:
谷歌开发者文档中给出的有关GMSAutocompleteViewControllerDelegate协议参考的信息
谷歌在他们的文档中提供的一个例子是GMSAutocompleteViewControllerDelegate的错误表示。该示例似乎是从Objective-C等价物的纯翻译,因此给出了所需委托函数的错误描述
将,与实际文档进行比较。注意
到示例中的didAutocompleteWithError
,以及
协议参考中的didFailAutocompleteWithError
如果我错了,请纠正我。我刚刚在Swift 3中收到此错误,并将其更改为以下内容对我有效:
func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Swift.Error) {
// TODO: handle the error.
print("Error: \(error.localizedDescription)")
}
您是否阅读了,并确保您已经实现了所需的功能?是的,我从google文档中获得了这段代码,并与api进行了双重检查,确认我拥有所有所需的功能google开发者指南的可能副本似乎缺少必要的“didFailAutocompleteWithError”。这就是我们所缺少的。感谢《开发者指南》指出了“didFailAutocompleteWithError”,然而“didFailAutocompleteWithError”实际上是必要的调用大起来,救了我:)