类型'(key:String,value:Any)'没有下标成员

时间:2017-08-28 09:21:19

标签: ios arrays swift

我用这段代码循环遍历一个字典数组。

if let users = object["usersList"] as? [Any] {
    for user in users as! [String : Any] {
        print(user["id"])
    }
}

每个字典都有id个属性。当我想用user["id"]访问它时,我收到错误:

  

Type'(key:String,value:Any)'没有下标成员

3 个答案:

答案 0 :(得分:2)

您正在将数组转换为无法工作的字典。

最简单的解决方案是(可选向下)将users投射到特定[[String : Any]]

if let users = object["usersList"] as? [[String : Any]] {
    for user in users {
        print(user["id"])
    }
}

答案 1 :(得分:1)

你不应该用as!强制解包,而是像以前一样使用条件展开:

if let users = object["usersList"] as? [Any] {
    for user in users
        if let user = user as? [String : Any] {
            if let userId = user["id"] {
                print(userId)
            }
        }
    }
}

这样你确定自己不会遇到崩溃。如果你不喜欢整个嵌套的东西,你也可以使用if-guard语句。

答案 2 :(得分:0)

试试这个

if let users = object["usersList"] as? [Any]{
   for user in users as! [[String : Any]]{
      print(user["id"])
   }
}