Swift 2 MKMapViewDelegate rendererForOverlay选项

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的定义更改为现在返回MKOverlayRenderer而不是MKOverlayRenderer!,现在不允许我返回nil(不出所料)因为MKOverlayRenderer不是NilLiteralConvertible.但是,文档(在Xcode 7中)仍然说:

Return Value

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.

如果通过我不认识的叠加层,我应该返回什么?

解决方法

根据最新的MKMapView.h,新的函数声明现在是:

// Current renderer for overlay; returns nil if the overlay is not shown.
@available(iOS 7.0,*)
func rendererForOverlay(overlay: MKOverlay) -> MKOverlayRenderer?

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...