स्विफ्ट 1.2 में मैं इस:स्विफ्ट 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
}
}
स्विफ्ट 2 बदल गया है mapView:rendererForOverlay
की परिभाषा अब MKOverlayRenderer
वापस जाने के लिए नहीं बल्कि MKOverlayRenderer!
से, और अब (आश्चर्य) मेरे nil
वापस जाने के लिए अनुमति नहीं दी जाएगी MKOverlayRenderer
NilLiteralConvertible
नहीं है। हालांकि, प्रलेखन (Xcode 7 में) अभी भी कहते हैं: जब नक्शे पर निर्दिष्ट ओवरले पेश
वापसी मूल्य
रेंडरर का उपयोग करें। यदि आप शून्य वापस करते हैं, तो निर्दिष्ट ओवरले ऑब्जेक्ट के लिए कोई सामग्री तैयार नहीं की जाती है।
यदि मुझे ओवरले पास नहीं किया गया है तो मुझे वापस लौटने के लिए क्या करना चाहिए?
सुनिश्चित नहीं हैं कि ढंग से काम आप बोलते हैं। मैं प्रोटोकॉल फ़ंक्शन के बारे में बात कर रहा हूं 'func mapView (mapView: MKMapView, rendererForOverlay ओवरले: MKOverlay) -> MKOverlayRenderer!' – Grimxn
ओह क्षमा करें, मेरी गलती। यह दिलचस्प है कि इसके ओबीजेसी संस्करण भी एक गैर-शून्य वापसी निर्दिष्ट करता है। मैं इस के जवाब की तलाश जारी रख रहा हूं ... –
असल में मैंने अभी इस पर बग # 21581742 दायर किया है। –