在 Swift 1.2 我有这个:
class UVC: NSViewController, MKMapViewDelegate {
// ...
// **************************************
// MARK: MapView Delegate
// **************************************
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer! {
if overlay is OSGBTiles {
return OSGBTilesRenderer(tileOverlay: overlay as! OSGBTiles)
} else if overlay is ESRI {
return ESRIRenderer(shapeFileOverlay: overlay as! ESRI)
} else if overlay is MKTileOverlay {
return MKTileOverlayRenderer(overlay: overlay)
} else {
print("Unknown overlay")
}
return nil
}
}
Swift 2 已将定义更改 mapView:rendererForOverlay
为 now returnMKOverlayRenderer
而不是MKOverlayRenderer!
,并且现在不允许我返回nil
(不出所料) as MKOverlayRenderer
is not NilLiteralConvertible
。但是,文档(在 Xcode 7 中)仍然说:
返回值
在地图上呈现指定叠加层时使用的渲染器。如果返回 nil,则不会为指定的叠加对象绘制任何内容。
如果通过了我不认识的覆盖,我应该返回什么?