Trong Swift 1.2 Tôi có điều này:Swift 2 MKMapViewDelegate rendererForOverlay optionality
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 đã thay đổi định nghĩa của mapView:rendererForOverlay
đến nay trở MKOverlayRenderer
hơn MKOverlayRenderer!
, và sẽ không phải bây giờ cho phép tôi trở nil
(gì ngạc nhiên) dưới dạng MKOverlayRenderer
không phải là NilLiteralConvertible
. Tuy nhiên, các tài liệu (trong Xcode 7) vẫn nói:
Return Value
Các renderer để sử dụng khi trình bày các lớp phủ quy định trên bản đồ. Nếu bạn trả về nil, không có nội dung nào được vẽ cho đối tượng lớp phủ được chỉ định.
Tôi phải trả lại điều gì nếu vượt qua lớp phủ mà tôi không nhận ra?
Không chắc trong đó có chức năng bạn nói. Tôi đang nói về chức năng giao thức 'func mapView (mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer!' – Grimxn
Oh xin lỗi, sai lầm của tôi. Thật thú vị là ngay cả phiên bản ObjC của điều này cũng chỉ rõ một sự trả về không null. Tôi đang tiếp tục tìm kiếm câu trả lời cho điều này ... –
Thực ra tôi vừa mới nộp lỗi # 21581742 về vấn đề này. –