apple - swift ios documentation
Nil es incompatible con el tipo de retorno ''MKOverlayRenderer'' (4)
Porque nil no es un MKOverlayRenderer. Si espera que una función devuelva nulo, el tipo de devolución debería ser opcional. Como se define, la función solo puede devolver MKOverlayRenderer real.
Estoy recibiendo este error
"Nil es incompatible con el tipo de retorno ''MKOverlayRenderer''" .
Aquí está mi código:
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKCircle {
let circleRenderer = MKCircleRenderer(overlay: overlay)
circleRenderer.lineWidth = 1.0
circleRenderer.strokeColor = UIColor.purpleColor()
circleRenderer.fillColor = UIColor.purpleColor().colorWithAlphaComponent(0.4)
return circleRenderer
}
return nil
}
¿Por qué está ocurriendo?
devuelve MKPolylineRenderer () en lugar de devolver nil.
No se supone que devuelva nil
para esta función de delegado. La vista del mapa está esperando un procesamiento para cada una de las superposiciones. En tu caso, deberías hacer esto:
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
{
assert(overlay is MKCircle, "overlay must be circle")
let circleRenderer = MKCircleRenderer(overlay: overlay)
circleRenderer.lineWidth = 1.0
circleRenderer.strokeColor = UIColor.purpleColor()
circleRenderer.fillColor = UIColor.purpleColor().colorWithAlphaComponent(0.4)
return circleRenderer
}
No creo que deba devolver MKPolylineRenderer()
porque puede ocultar su error.
Esto parece ser respondido aquí:
Swift 2 MKMapViewDelegate rendererForOverlay opcionalidad
Usted no está autorizado a devolver nada. Su superposición debe tener un renderizador. Reemplace "return nil" con una aserción.