gpt4 book ai didi

ios - 既然我正在使用 Swift 2.0,我该如何修复我的 MKOverlayRenderer?

转载 作者:行者123 更新时间:2023-12-01 18:10:12 24 4
gpt4 key购买 nike

所以当我使用 Swift 1.2 时,这个函数运行良好,并为我提供了我需要的功能。

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

if overlay is MKPolyline {
let pr = MKPolylineRenderer(overlay: overlay)
pr.strokeColor = self.lightBlue
pr.lineWidth = 14
return pr
}
//I get the error here, because I need to return something
}

现在,我收到一条错误消息,提示“预期返回 'MKOverlayRenderer' 的函数中缺少返回值”。

这仍然是这种方法的使用方式吗?我能做些什么来解决这个问题?

最佳答案

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

只会为您添加到 MKMapView 实例的每个叠加层调用。

如果只添加 MKPolyline到你的 mapView,你可以确定当这个委托(delegate)函数被调用时, overlay参数类型为 MKPolyline .既然是这种情况,就没有理由检查覆盖参数是否是 MKPolyline 的实例。与 if overlay is MKPolyline .你可以这样做:
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
let pr = MKPolylineRenderer(overlay: overlay)
pr.strokeColor = self.lightBlue
pr.lineWidth = 14
return pr
}

如果您曾经向 MKMapView 添加不同类型的叠加层,您可以这样做:
if overlay is MKPolyline {
// return renderer for MKPolyline overlay
return mkPolylineRenderer
} else {
// handle the different type of overlay...
return otherTypeOfOverlayRenderer
}

Swift 编译器足够智能,可以从 if/else block 中推断出某些东西总会被返回。

关于ios - 既然我正在使用 Swift 2.0,我该如何修复我的 MKOverlayRenderer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915437/

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