2017-07-13 25 views
0

iこの質問は重複する可能性があります。しかし、私は、この解決手段をオーバーフローで見つけようとしていました。残念ながら、私は正しい答えを見つけませんでした。ここで私は何をしました。タイプ "any"にはalamofireに添え字メンバーがありません4 iOS swift

私はalamofireを使用してYoutubeデータにアクセスしようとしていました。私のviewDidLoad

let API_KEY = "**************" 
    let UPLOADS_PLAYLIST_ID = "PLqQMDoH89jqEoHMTsxxyMz1Hym_pOViq6" 
    let CHANNEL_ID = "UCcMUpFCaFhlyjZyy9d9LeRA" 
    let parameters = ["part":"snippet","channelId":CHANNEL_ID,"playListId":UPLOADS_PLAYLIST_ID,"key":API_KEY] 

    Alamofire.request("https://www.googleapis.com/youtube/v3/playlists", parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in 

     if let JSON = response.result.value{ 

      for video in JSON["item"] as! NSArray { 
       print(video) 
      } 

     } 
    } 

には「任意の」なしの添字メンバー

を持っている、それはエラーを与えるのです。また、私は別の方法を試してみましたが、これもエラーに私に

Alamofire.request("https://www.googleapis.com/youtube/v3/playlists", 
    parameters: parameters, encoding: URLEncoding.default, headers: 
    nil).responseJSON { (response) in 



     switch(response.result) { 
     case .success(_): 
      if let JSON = response.result.value as! [[String : Any]]!{ 
       for video in JSON["item"] as! NSArray { 
             print(video) 
       } 
      } 
      break 

     case .failure(_): 
      print("There is an error") 
      break 
     } 

    } 

を与えてくれたエラーの種類を与えますし、文字列型のインデックスを持つ型[[string:any]]の値を添字にすることはできません

+0

JSONを読んでください。非常に簡単です。配列( '[]')と辞書( '{}')のコレクション型は2つ(2つ!)しかありません。このJSONは辞書で明瞭に始まります。 – vadian

答えて

0

ANY型で再キャストすることはできません。[String:[String:どれか]] ここ

+0

私は今何をすべきですか? –

+0

NSArrayまたはNSDictionnaryのような型として直接キャストします。そして、[:]メソッドを使用してキャストが本当に好きな場合は、exemple [String:[String:String]]の型でanyを変更してください。 –

+0

今私はこの方法を試しています。 .result.valueとして? [String:Any] {JSON ["item"]の動画は! NSArrayの{印刷(ビデオ)}}しかし、これは致命的なエラー致命的なエラーを取得しては:としてJSONは= response.result.value許可すればオプションの値 –

1

問題を: if let JSON = response.result.value as! [[String : Any]]!

まず:あなたは(if letを)、オプションのチェーンを使用している場合には、力キャスト(as![[String : Any]]!)を使用してはいけません。

第2に、JSONはDictionaryではなく、ArrayDictionariesです。

代わりに試してみてください。
if let JSON = response.result.value as? [String : Any]

また、あなたが

if let JSON = response.result.value{ 

    for video in JSON["item"] as! NSArray { 
    print(video) 
    } 
} 

をしようとすると、あなたはDictionaryJSON変数をキャストしていないJSONがnilでない場合、あなたは単にチェック。

+0

をアンラップしながら、予想外にnilを見つけ、今私はこのよう をしようとしている今、私はこの方法 をしようとしていますか? [String:Any] { JSON ["item"]の動画をそのまま! NSArrayの{ プリント(ビデオ) } } しかし、この致命的なエラー致命的なエラーになっ:私は今、何をすべきオプションの値 –

+0

をアンラップしながら、予想外にnilを。私はあなたのJSONは、「アイテム」の要素が含まれていないよう –

+0

が見える本当に混乱しています。あなたの質問を編集してJSONを投稿してください –

関連する問題