2015-11-06 75 views
6

我試圖做到這一點,但它說Swift For Loop類型'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返回一個可選項)。您無法循環可選。的解決方案是把結果作爲同時安全解包的數組:

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

感謝那些曾 –

+0

不客氣。 – Moritz

0

它的發生是因爲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 
} 
相關問題