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ę?
Nie wiesz funkcjonować mówisz. Mówię o funkcji protokołu 'func mapView (mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer!' – Grimxn
Och, przepraszam, mój błąd. Interesujące jest to, że nawet wersja ObjC określa zwrot niezerowy. Ciągle szukam odpowiedzi na to ... –
Właściwie właśnie zgłosiłem błąd # 21581742 na ten temat. –