Swift 2 MKMapViewDelegate rendererForOverlay 编译警告
Swift 2 MKMapViewDelegate rendererForOverlay compiler warning
我正在尝试在 Swift 2 中的地图上绘制折线。一切正常,但我收到此代码的编译器警告:
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) 中的结果和参数具有与协议 MKMapViewDelegate 预期的不同的可选性'
现在,这将可以正常编译,但显示编译器警告让我很烦恼。
如果我把第一行改成
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
通过删除 !,警告将消失,但我收到一个错误,指出 return 不能为 nil,代码将不再编译。
这也是此线程的跟进,其中陈述了相同的问题但没有令人满意的答案:
Swift 2 MKMapViewDelegate rendererForOverlay optionality
任何人都可以阐明现在在 Swift 2 中使用此功能的正确方法吗?
谢谢。
根据自动完成的内容,原型看起来像这样:
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
显然你对此无能为力,除了 returning return MKPolylineRenderer()
通常你会 return nil。
对我来说,这看起来像是一个实现错误,因为这是文档中关于 returned 对象的内容:
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
中为其创建案例
不要return零。这仅针对您创建的叠加层调用,因此与其检查叠加层是否为 MKPolyline,不如检查它是哪个叠加层。如果只有一个,return 指定的折线渲染器而不检查它是哪一个。
我正在尝试在 Swift 2 中的地图上绘制折线。一切正常,但我收到此代码的编译器警告:
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) 中的结果和参数具有与协议 MKMapViewDelegate 预期的不同的可选性'
现在,这将可以正常编译,但显示编译器警告让我很烦恼。
如果我把第一行改成
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
通过删除 !,警告将消失,但我收到一个错误,指出 return 不能为 nil,代码将不再编译。
这也是此线程的跟进,其中陈述了相同的问题但没有令人满意的答案: Swift 2 MKMapViewDelegate rendererForOverlay optionality
任何人都可以阐明现在在 Swift 2 中使用此功能的正确方法吗?
谢谢。
根据自动完成的内容,原型看起来像这样:
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
显然你对此无能为力,除了 returning return MKPolylineRenderer()
通常你会 return nil。
对我来说,这看起来像是一个实现错误,因为这是文档中关于 returned 对象的内容:
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
中为其创建案例不要return零。这仅针对您创建的叠加层调用,因此与其检查叠加层是否为 MKPolyline,不如检查它是哪个叠加层。如果只有一个,return 指定的折线渲染器而不检查它是哪一个。