我正在努力做到这一点,但它说
类型' 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")
}
我做错了什么。我没弄明白。谢谢你的帮助。
答案 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
}