2017-08-28 11 views
-1

私はこのコードで辞書の配列をループします。タイプ '(キー:文字列、値:任意)'には添字のメンバーはありません

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

usersをキャスト! [if-let]文(1行目)の[String:Any] '? – LinusGeffarth

答えて

0

配列を動作できない辞書にキャストしています。

最も簡単な解決策は、(ダウンオプション)にあるあなたが `として行わないのはなぜ特定の[[String : Any]]

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

はあなたが強制的にアンラップべきではありませんas!で、あなたが前に行ったように代わりに条件付きアンラップを使用して、この1

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

をお試しください:

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ステートメントを使うこともできます。

関連する問題