gpt4 book ai didi

Swift 2 MKMapViewDelegate rendererForOverlay 编译警告

转载 作者:搜寻专家 更新时间:2023-10-30 22:02:00 27 4
gpt4 key购买 nike

我正在尝试在 Swift 2 中的 map 上绘制多段线。一切正常,但我收到针对此代码的编译器警告:

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {

if overlay is MKPolyline {

let polylineRenderer = MKPolylineRenderer(overlay: overlay)

polylineRenderer.strokeColor = UIColor.redColor()

polylineRenderer.lineWidth = 5

return polylineRenderer
}

return nil

}

这会给我一个警告说“mapView (rendererForOverlay) 中的结果和参数具有与协议(protocol) MKMapViewDelegate 预期的不同的可选性

现在,这可以正常编译,但显示编译器警告让我很烦。

如果我把第一行改成

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {

通过删除 !,警告将消失,但我得到一个错误,返回不能为 nil,代码将不再编译。

这也是该线程的跟进,其中陈述了相同的问题但没有令人满意的答案: Swift 2 MKMapViewDelegate rendererForOverlay optionality

谁能阐明现在在 Swift 2 中使用此功能的正确方法?

谢谢。

最佳答案

根据自动完成的内容,原型(prototype)看起来像这样:

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer

很明显,除了返回 return MKPolylineRenderer() 之外,您对此无能为力,而通常您会返回 nil。

对我来说,这看起来像是一个实现错误,因为这是文档中关于返回对象的内容:

The renderer to use when presenting the specified overlay on the map. If you return nil, no content is drawn for the specified overlay object.

我建议您在 Apple's bug report 中为其创建案例

关于Swift 2 MKMapViewDelegate rendererForOverlay 编译警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com