2016-10-26 6 views
-1

私はすべてのトレンドの名前を得るためにTwitterのトレンドAPIを使用しています。パースツイッタートレンドapiの結果が速い

私は次のセットアップがあります

let url = "\(APIConstants.Twitter.APIBaseURL)1.1/trends/place.json?id=1" 

    let client = TWTRAPIClient() 
    let statusesShowEndpoint = url 
    let params = ["id": "20"] 
    var clientError : NSError? 

    let request = client.urlRequest(withMethod: "GET", url: statusesShowEndpoint, parameters: params, error: &clientError) 

    client.sendTwitterRequest(request) { (response, data, connectionError) -> Void in 
     if connectionError != nil { 
      print("Error: \(connectionError)") 
     } 

     do { 
      let json = try JSONSerialization.jsonObject(with: data!, options: []) 

     } catch let jsonError as NSError { 
      print("json error: \(jsonError.localizedDescription)") 
     } 


    } 

とコールした後、JSONには、以下のデータを持っている:上記のJSONデータから

(
{ 
    "as_of": "2012-08-24T23:25:43Z", 
    "created_at": "2012-08-24T23:24:14Z", 
    "locations": [ 
     { 
     "name": "Worldwide", 
     "woeid": 1 
     } 
    ], 
    "trends": [ 
     { 
     "tweet_volume": 3200, 
     "events": null, 
     "name": "#GanaPuntosSi", 
     "promoted_content": null, 
     "query": "%23GanaPuntosSi", 
     "url": "http://twitter.com/search/?q=%23GanaPuntosSi" 
     }, 
     { 
     "tweet_volume": 4200, 
     "events": null, 
     "name": "#WordsThatDescribeMe", 
     "promoted_content": null, 
     "query": "%23WordsThatDescribeMe", 
     "url": "http://twitter.com/search/?q=%23WordsThatDescribeMe" 
     }, 

     { 
     "tweet_volume": 2200, 
     "events": null, 
     "name": "Sweet Dreams", 
     "promoted_content": null, 
     "query": "%22Sweet%20Dreams%22", 
     "url": "http://twitter.com/search/?q=%22Sweet%20Dreams%22" 
     } 
    ] 
    } 
) 

を、私はtrends内のすべてのnameを保存します迅速な配列で。

答えて

0

あなたが期待していた構造にデータを戻していることを確認するために必要なデータのチェックとキャストがあります。単純な繰り返しです。これらの線に沿って何かあなたが行くを取得する必要があります:

let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:Any] 
var names = [String]() 
if let trends = json?["trends"] as? [[String:Any]] { 
    for trend in trends { 
     if let name = trend["name"] as? String { 
      names.append(name) 
     } 
    } 
} 

安全構造を反復するために、様々なas?タイプのチェックに注意してください。タイプセーフな構造体にデータを読み込むことを含め、SwiftのJSONをきれいに扱うことの詳細については、this official blog post from Appleを参照してください。

関連する問題