2015-11-06 12 views
6

मैं यह करने के कोशिश कर रहा हूँ, लेकिन यह कहते है प्रकार केलूप वैल्यू के लिए स्विफ्ट 'AnyObject' टाइप करें कोई भी सदस्य है 'जेनरेटर'

मान 'AnyObject?' कोई सदस्य 'जनरेटर'

तो यह मेरा कोड है।

let dataDictionary:NSDictionary = try NSJSONSerialization.JSONObjectWithData(responseObject as! NSData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
       var customerArray = dataDictionary.valueForKey("kart") 
       for js: NSDictionary in customerArray { 
        let nameArray: NSArray = js.valueForKey("name") 
       } 

मैं क्या गलत कर रहा हूं। मुझे पता नहीं चला। आपकी मदद के लिए धन्यवाद।

उत्तर

8

आपका customerArray एक वैकल्पिक है, इसमें AnyObject? है (ऐसा इसलिए है क्योंकि .valueForKey वैकल्पिक विकल्प देता है)। आप एक वैकल्पिक पर लूप नहीं कर सकते हैं। समाधान एक सरणी, जबकि सुरक्षित unwrapping के रूप में परिणाम कास्ट करने के लिए है:

if let customerArray = dataDictionary.valueForKey("kart") as? NSArray { 
    for js in customerArray { 
     let nameArray = js.valueForKey("name") 
     // ... 
    } 
} 
+0

धन्यवाद कि –

+0

आपका स्वागत है। – Moritz

0

यह happend क्योंकि valueForKey विधि रिटर्न AnyObject प्रकार (AnyObject?) की Optional मूल्य। दरअसल, AnyObject में Generator सदस्य नहीं है, और for..in लूप (साथ ही Optional मान) में उपयोग नहीं किया जा सकता है। इसलिए, आपको वैकल्पिक मूल्य को अनदेखा करना चाहिए और इसे अपेक्षित प्रकार पर डालना चाहिए, जैसे:

let dataDictionary:NSDictionary = try NSJSONSerialization.JSONObjectWithData(responseObject as! NSData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
var customerArray = dataDictionary.valueForKey("kart")! as! [NSDictionary] 
for js: NSDictionary in customerArray { 
    let nameArray = js.valueForKey("name") as! NSArray 
} 
संबंधित मुद्दे