2014-06-10 5 views
37

में शब्दकोश में किसी भी ऑब्जेक्ट कास्टिंग करना मुझे एफ़नेटवर्किंग के साथ आईट्यून्स एपीआई से डेटा मिल रहा है और मैं प्रतिक्रिया के साथ एक शब्दकोश बनाना चाहता हूं लेकिन मैं इसे नहीं कर सकता।स्विफ्ट

त्रुटि:

func getItunesStore() { 

     self.manager.GET("https://itunes.apple.com/es/rss/topfreeapplications/limit=10/json", 
      parameters: nil, 
      success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in 
       var jsonResult: Dictionary = responseObject as Dictionary 

      }, 
      failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in 
       println("Error:" + error.localizedDescription) 
      }) 

    } 

उत्तर

103

जब आप स्विफ्ट में एक Dictionary परिभाषित आप कुंजी और मान प्रकार देना है: अभिव्यक्ति के प्रकार "शब्दकोश" "Hashable" टाइप करने के लिए

कनवर्ट नहीं कर सकता यह मेरा कोड है भी। कुछ की तरह:

var jsonResult = responseObject as Dictionary<String, AnyObject> 

कलाकारों में विफल रहता है, हालांकि, आप एक रनटाइम त्रुटि मिल जाएगा - आप की तरह कुछ के साथ बेहतर कर रहे हैं:

if let jsonResult = responseObject as? Dictionary<String, AnyObject> { 
    // do whatever with jsonResult 
} 
+0

धन्यवाद नैट! यह काम करता हैं! स्विफ्ट मेरे लिए थोड़ा अजीब है ... मुझे और अधिक अभ्यास करने की ज़रूरत है, धन्यवाद! – dpbataller

+0

मैं jsonResult से स्थानीय स्ट्रिंग में मान कैसे निर्दिष्ट करूं? चर? – Sean

+2

'l'' कीवर्ड को अपरिवर्तनीय के रूप में चिह्नित करने के बाद से आप jsonResult को कोई मान निर्दिष्ट नहीं कर सकते हैं। आपको एक नई प्रतिलिपि वस्तु का उपयोग करना होगा। – lomokat