2017-05-04 12 views
0
Alamofire.request(NEWS_FEED_URL).responseJSON { response in 

guard let newsResponse = response.result.value else{ 
     print("Error: \(response.result.error)") 
     return 
    } 
    print("JSON: \(newsResponse)") 
    let localArray:Array = [newsResponse] 
    print("Local Array:", localArray) 
} 



I am using alamofire to fetch data from server and trying to write parser on the response data. When I fetch response.result.value from alamofire and print it is working fine. But as soon as I put response.result.value in my local array it gives 


[<__NSArrayI 0x6080000bcf80>(
{ 
    category = World; 
})] 

などの結果(コンソール)。また、 'Any'型の応答値を 'Array'に変換できません。 Response.result.valueをタイプ 'Array'のローカル配列に追加する方法を教えてください。簡単にAlamofireの型キャストについて何か説明できますか?Alamofireからのローカル配列swift 3のレスポンス.result.valueを保存する方法3

答えて

1

response.result.valueの結果を単に辞書の配列にキャストする必要があります。

guard let newsResponse = response.result.value as? [[String:String]] else{ 
    print("Error: \(response.result.error)") 
    return 
} 
print("JSON: \(newsResponse)") 
let localArray = newsResponse 
//Access the localArray 
print("Local Array:", localArray) 
//Now to get the desired value from dictionary try like this way. 
let dic = localArray[0] 
let title = dic["title"] ?? "Default Title" 
let link = dic["link"] as? "Default link" 
//... get other value same way. 

注:あなたの応答は非常に別の配列の内側にそれを追加することで、そこから配列を作成していないすでにArrayです。

+0

をフォーマットするために使用[[String:Any]]を補正することではないかもしれないのでresponseJOSN結果に問題がありますが、あなたの提案のためにそんなにありがとう。しかし、まだ問題があります。すぐに私がするように ガードをしましょうnewsResponse = response.result.value? [[文字列:任意]]他の{ 印刷( "エラー:\(response.result.error)") リターン } 成功(真) プリント( "JSON:\(newsResponse)") それはすべてを変えます文字列に。また、内部には配列があります。 出力: JSON:[["description":ワシントンのテキスト、 "link":http://news.google.com/news/url ?, "image"://t0.gstatic.com/images?q= tbn :, "タイトル"ワシントンタイト jsonフォーマットのデータをローカル配列に入れたい。 –

+0

@RoshanRijal完璧に表示されている結果には問題ありません。素早い型の辞書は '[:]'と配列を '[]'としていますので、正確に応答しているサンプルの応答を表示します –

+0

しかし、単一アレイで。私は辞書にその辞書を戻したい。 :) –

0

結果が正しいJSONフォーマットはJSON

Alamofire.request(NEWS_FEED_URL).responseJSON { response in 
    guard let newsResponse = response.result.value as? [[String:Any]] else{ 
      print("Error: \(response.result.error)") 
      return 
     } 
     print("JSON: \(newsResponse)") 
     let firstRow = newResponse[0] 
     let categoryValue = firstRow["category"] ?? "Default Category" 
     } 
関連する問題