2015-09-08 11 views
6

मैं स्विफ्ट 2. यह सब अच्छी तरह से काम करता है में एक नक्शे पर एक पॉलीलाइन आकर्षित करने के लिए कोशिश कर रहा हूँ, लेकिन मैं इस कोड के लिए एक संकलक चेतावनी मिलती है:स्विफ्ट 2 MKMapViewDelegate rendererForOverlay संकलक चेतावनी

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 

} 

यह मैं दे देंगे एक चेतावनी का कहना है कि

अब, यह ठीक संकलित कर देगा 'परिणाम और MapView (rendererForOverlay) में पैरामीटर प्रोटोकॉल MKMapViewDelegate द्वारा की उम्मीद की तुलना में अलग optionality है', लेकिन यह मुझे कीड़े कि संकलक चेतावनी दिखा रहा है।

अगर मैं निकाल कर!

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

को पहली पंक्ति बदलने के लिए, चेतावनी दूर जाना होगा, लेकिन मैं एक त्रुटि है कि वापसी नहीं के बराबर नहीं हो सकता और कोड अब और संकलन नहीं होगा मिलता है।

यह भी है एक इस सूत्र जहां एक ही समस्या कहा गया था अप करने के लिए का पालन करें, लेकिन कोई संतोषजनक जवाब उपलब्ध है: Swift 2 MKMapViewDelegate rendererForOverlay optionality

किसी को भी सही तरीका स्विफ्ट 2 में अब इस सुविधा का उपयोग करने के लिए पर किसी भी प्रकाश डाला सकता है?

धन्यवाद।

उत्तर

17

क्या स्वत: पूर्ण प्रोटोटाइप का सुझाव से जा रहे हैं इस तरह दिखता है:

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

और जाहिरा तौर पर कुछ भी नहीं है आप इसके बारे में क्या कर सकते हैं, return MKPolylineRenderer() जहां सामान्य रूप से आप वापसी होगी शून्य लौटने के लिए छोड़कर नहीं है।

मेरे लिए यह, एक कार्यान्वयन बग की तरह लग रहा है क्योंकि यहाँ क्या प्रलेखन लौटे वस्तु के बारे में कहते हैं है: जब नक्शे पर निर्दिष्ट ओवरले पेश

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

मैं तुम्हें Apple's bug report

+1

इसके लिए धन्यवाद। यह कोड काम करता रहता है और चेतावनियों से छुटकारा पाता है। –

+0

वापसी शून्य मुझे त्रुटि दे रहा है। तो मेरी मदद करो –

5

में इसके लिए एक मामला बना वापसी नहीं के बराबर नहीं है सुझाव देते हैं। इसे केवल आपके द्वारा बनाए गए ओवरले के लिए बुलाया जाता है, इसलिए ओवरले के एमकेपोलीलाइन की जांच करने के बजाय, यह जांचें कि आपका कौन सा ओवरले है। यदि आपके पास केवल एक है, तो यह निर्दिष्ट किए बिना निर्दिष्ट पॉलीलाइन रेंडरर को वापस लौटाएं।

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