2017-08-28 63 views
-1

我用这段代码循环访问字典数组。类型'(key:String,value:Any)'没有下标成员

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)' has no subscript members

+0

你为什么不这样做了'作为! [if-let'语句中的[String:Any]'(第一行)? – LinusGeffarth

回答

0

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

最简单的解决方法是(可选向下)投users具体[[String : Any]]

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

试试这个

if let users = object["usersList"] as? [Any]{ 
    for user in users as! [[String : Any]]{ 
     print(user["id"]) 
    } 
} 
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语句。

相关问题