2015-06-10 8 views
6

स्विफ्ट 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 वापस जाने के लिए अनुमति नहीं दी जाएगी MKOverlayRendererNilLiteralConvertible नहीं है। हालांकि, प्रलेखन (Xcode 7 में) अभी भी कहते हैं: जब नक्शे पर निर्दिष्ट ओवरले पेश

वापसी मूल्य

रेंडरर का उपयोग करें। यदि आप शून्य वापस करते हैं, तो निर्दिष्ट ओवरले ऑब्जेक्ट के लिए कोई सामग्री तैयार नहीं की जाती है।

यदि मुझे ओवरले पास नहीं किया गया है तो मुझे वापस लौटने के लिए क्या करना चाहिए?

उत्तर

2

सबसे हाल ही में MKMapView.h के अनुसार, नए कार्य घोषणा अब है: जिनमें से

// Current renderer for overlay; returns nil if the overlay is not shown. 
@available(iOS 7.0, *) 
func rendererForOverlay(overlay: MKOverlay) -> MKOverlayRenderer? 
+0

सुनिश्चित नहीं हैं कि ढंग से काम आप बोलते हैं। मैं प्रोटोकॉल फ़ंक्शन के बारे में बात कर रहा हूं 'func mapView (mapView: MKMapView, rendererForOverlay ओवरले: MKOverlay) -> MKOverlayRenderer!' – Grimxn

+0

ओह क्षमा करें, मेरी गलती। यह दिलचस्प है कि इसके ओबीजेसी संस्करण भी एक गैर-शून्य वापसी निर्दिष्ट करता है। मैं इस के जवाब की तलाश जारी रख रहा हूं ... –

+0

असल में मैंने अभी इस पर बग # 21581742 दायर किया है। –

संबंधित मुद्दे