Ios 既然我';我在使用Swift 2.0?

Ios 既然我';我在使用Swift 2.0?,ios,mkmapview,swift2,xcode7,mkoverlay,Ios,Mkmapview,Swift2,Xcode7,Mkoverlay,因此,当我使用Swift 1.2时,该函数运行良好,为我提供了所需的功能 func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { if overlay is MKPolyline { let pr = MKPolylineRenderer(overlay: overlay) pr.strokeColor = self

因此,当我使用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    
}
现在,我得到一个错误,说“在一个预期返回'mkoverlayrender'的函数中缺少返回”

这种方法仍然是这样使用的吗?我能做些什么来补救这个问题

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
将仅为添加到MKMapView实例的每个覆盖调用

如果仅将
MKPolyline
添加到地图视图,则可以确保调用此委托函数时,
overlay
参数的类型为
MKPolyline
。由于是这种情况,因此没有理由检查覆盖参数是否是
MKPolyline
的实例,如果覆盖是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块推断出总是会返回某些内容

将仅为添加到MKMapView实例的每个覆盖调用

如果仅将
MKPolyline
添加到地图视图,则可以确保调用此委托函数时,
overlay
参数的类型为
MKPolyline
。由于是这种情况,因此没有理由检查覆盖参数是否是
MKPolyline
的实例,如果覆盖是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块推断出总是会返回某些内容。

这很有效,非常详细,非常感谢。这很有效,非常详细,非常感谢。