Swift For Loop Value类型' AnyObject?'没有会员'发电机'

时间:2015-11-06 12:51:39

标签: ios swift for-loop

我正在努力做到这一点,但它说

  

类型' 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")
                }

我做错了什么。我没弄明白。谢谢你的帮助。

2 个答案:

答案 0 :(得分:8)

您的customerArray是可选的,它的类型为AnyObject?(这是因为.valueForKey返回可选项)。你不能循环使用Optional。解决方案是在安全解包时将结果转换为数组:

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

答案 1 :(得分:0)

它发生了,因为valueForKey方法返回Optional类型AnyObject类型的值AnyObject?。实际上,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
}