2017-08-28 103 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語句。

相關問題