2016-01-27 83 views
2

我得到的错误:'ViewController'不符合协议'GMSAutoCompleteViewControllerDelegate'在下面的代码。ViewController不符合协议GMSAutoCompleteViewControllerDelegate在Swift

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) 
    } 
} 

该修补程序是什么?谢谢

+0

你读过[文档](https://developers.google.com/maps/documentation/ ios-sdk/reference/protocol_g_m_s_autocomplete_view_controller_delegate-p),并确保你已经实现了所需的功能? – Laffen

+0

是的,我从谷歌文档得到这段代码,并双重检查与我有所有必需的功能的API –

+1

可能重复[ios Swift - API GoogleMaps - 不符合协议GSMAutocompleteViewControllerDelegate](http://stackoverflow.com/questions/ 34676576/ios-swift-api-google-map-not-conform-protocol-gsmautocompleteviewcontrollerd) – Laffen

回答

2

似乎您错误地键入了所需功能之一。该didAutoCompleteWithError

func viewController(viewController: GMSAutocompleteViewController!, didFailAutocompleteWithError error: NSError!) { 
    // TODO: handle the error. 
    print("Error: ", error.description) 
} 

编辑: 关于在Google代码文档中给出的GMSAutocompleteViewControllerDelegate协议的参考信息。

谷歌在他们的文档中提供的一个例子是GMSAutocompleteViewControllerDelegate的错误表示。看来这个例子是Objective-C等价物的纯粹翻译,因此给出了所需委托函数的错误描述。

example与实际文档here进行比较。请注意0​​与示例中的didAutocompleteWithError以及协议参考中的 didFailAutocompleteWithError

纠正我,如果我错了。

+0

开发人员指南指出'didAutoCompleteWithError',但'didFailAutocompleteWithError'实际上是必要的调用 –

-1

你可能在GMSMapViewDelegate协议中缺少必需的功能。 Ctrl +点击进入GMSMapViewDelegate并查看列出的功能:是否实现了所有未列为@optional的功能?如果你还没有,swift将不会编译。

4

我只是在斯威夫特3收到此错误,并将其转变为我下面的工作:

func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Swift.Error) { 
    // TODO: handle the error. 
    print("Error: \(error.localizedDescription)") 
} 
+1

大起来,救了我:) –

相关问题