2015-06-10 10 views
6

w Swift 1.2 mam to:Swift 2 MKMapViewDelegate rendererForOverlay opcjonalności

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 uległa zmianie definicja mapView:rendererForOverlay aby teraz powrócić MKOverlayRenderer zamiast MKOverlayRenderer! i nie będzie teraz pozwólcie mi wrócić nil (nic dziwnego) jako MKOverlayRenderer nie jest NilLiteralConvertible. Jednak dokumentacja (w Xcode 7) nadal mówi:

Return Value

renderujący do wykorzystania podczas prezentacji określonego nakładkę na mapie. Jeśli zwrócisz zero, żadna treść nie zostanie narysowana dla określonego obiektu nakładki .

Co powinienem zwrócić, jeśli minął nakładkę, której nie rozpoznaję?

Odpowiedz

2

Według najnowszego MKMapView.h nowa deklaracja funkcja jest obecnie: z czego

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

Nie wiesz funkcjonować mówisz. Mówię o funkcji protokołu 'func mapView (mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer!' – Grimxn

+0

Och, przepraszam, mój błąd. Interesujące jest to, że nawet wersja ObjC określa zwrot niezerowy. Ciągle szukam odpowiedzi na to ... –

+0

Właściwie właśnie zgłosiłem błąd # 21581742 na ten temat. –

Powiązane problemy