Swift类型为“AnyObject?”的循环值没有会员“发电机” [英] Swift For Loop Value of type 'AnyObject?' has no member 'Generator'

查看:318
本文介绍了Swift类型为“AnyObject?”的循环值没有会员“发电机”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试这样做,但是有人说:
$ b


类型'AnyObject?'的值没有成员'Generator'


所以这是我的代码。

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

我做错了什么,我没有弄清楚。谢谢你的帮助。

解决方案您的 customerArray 是可选的,它的类型为 AnyObject?(这是因为 .valueForKey 返回一个可选项)。你不能遍历一个可选的。解决方法是在安全展开的情况下将结果转换为数组:

 如果让customerArray = dataDictionary.valueForKey(kart)as ? NSArray {
为customerArray中的js {
let nameArray = js.valueForKey(name)
// ...
}
}


I am trying to do this but it's says

Value of type 'AnyObject?' has no member 'Generator'

So this is my code.

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")
                }

What I am doing wrong.I didn't figure out.Thank you for your helps.

解决方案

Your customerArray is an Optional, it has the type AnyObject? (this is because .valueForKey returns an Optional). You can't loop over an Optional. Solution is to cast the result as an array while safe unwrapping:

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

这篇关于Swift类型为“AnyObject?”的循环值没有会员“发电机”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆