Swift 2 MKMapViewDelegate rendererForOverlay ostrzeżenie kompilatora

staram się narysować linię łamaną na mapie Swift 2. Wszystko działa dobrze, ale dostaję ostrzeżenie kompilatora dla tego kodu:

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {

    if overlay is MKPolyline {

        let polylineRenderer = MKPolylineRenderer(overlay: overlay)

        polylineRenderer.strokeColor = UIColor.redColor()

        polylineRenderer.lineWidth = 5

        return polylineRenderer
    }

    return nil

}

to daje mi ostrzeżenie mówi, że 'wynik i ustawienia w mapView (rendererForOverlay) mają różną опциональность, niż oczekiwano protokołem MKMapViewDelegate'

teraz to będzie skompilować w porządku, ale martwi mnie, że pojawi się ostrzeżenie kompilatora.

Jeśli zmienię pierwszy wiersz na

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {

przez zdjęciu ! ostrzeżenie znika, ale pojawia się błąd, że zwrot nie może być zerowy, a kod nie będzie się kompilować.

To również kontynuacja tego tematu, gdzie został określony ten sam problem, ale nie ma satysfakcjonującej odpowiedzi: Swift 2 MKMapViewDelegate rendererForOverlay optionality

czy może ktoś rzucić światło na właściwy sposób korzystać z tej funkcji, teraz w Swift 2?

dzięki.


idąc po tym, że autouzupełnianie oferuje prototyp wygląda następująco:

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer

i, najwyraźniej, nie można nic z tym zrobić, jak tylko wrócić return MKPolylineRenderer() gdzie zazwyczaj zwracają nil.

dla mnie to wygląda na błąd w realizacji, bo to co mówi dokumentacja o zwróconej obiekcie:

wizualizer, używany w widoku określonego nakładki na mapie. jeśli zwróci nil, nie ma treści przemawia za określony obiekt nakładki.

proponuję utworzyć etui dla niego raport o błędzie Apple


nie zwróci nil. To jest wywoływana tylko dla nakładek, które tworzysz, więc zamiast sprawdzania, czy nakładki MKPolyline, sprawdź, które z twoich nakładek. Jeśli masz tylko jeden, oddajcie podany полилинейный wizualizer, nie sprawdzając, jaki on jest.