Ios ViewController不符合Swift中的协议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

我收到错误:“ViewController”不符合以下代码中的协议“GMSAutoCompleteViewControllerDelegate”

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”实际上是必要的调用大起来,救了我:)