2016-08-07 4 views
7
let urlAsString = "https://drive.google.com/uc?export=download&id=0B2bvUUCDODywWTV2Q2IwVjFaLW8" 
    let url = NSURL(string: urlAsString)! 
    let urlSession = NSURLSession.sharedSession() 

    let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in 
     do { 
      if let jsonDate = data, let jsonResult = try NSJSONSerialization.JSONObjectWithData(jsonDate, options: []) as? NSDictionary { 

       print(jsonResult) 

      } 
     } catch let error as NSError { 
      print(error) 
     } 


    }) 
    jsonQuery.resume() 

ここで私はオンラインjsonからデータを受け取り、それをNSDictionaryとしてjsonresultに格納しています。私は2つの別々の配列としてすべてのキーと値を取得する必要がありますか?SwiftのNSDictionaryからすべてのキーと値を別々の文字列配列に取得する方法は?

基本的に私はこの

jsonresult.allkeysたい - > String配列
jsonresult.allvalues - > String配列

答えて

19

だ:

let keys = jsonResult.flatMap(){ $0.0 as? String } 
let values = jsonResult.flatMap(){ $0.1 } 
+0

タイプ ' NSData 'にメンバー' flatMap 'はありません –

+0

@AniketPatil、修正済み、 'jsonData'ではなく' jsonResult'でなければなりません。 – Khundragpan

3

あなたはNSDictionaryとして化するJsonResultを使用しているので、それは非常に簡単ですが。あなたに

let dict: NSDictionary = ["Key1" : "Value1", "Key2" : "Value2"] 

let keys = dict.allKeys 
let values = dict.allValues 

はケースを使用でき

let keys:[String] = dict.allKeys as! [String] 

var values:[String] 

if let valuesSting = dict.allValues as? [String] { 
    values = valuesSting 
} 
+0

(アレイ)clientSuggestions =のjsonResult.allKeys。 ** [タイプ]の[AnyObject]の値を[String]に割り当てることはできません** –

+0

clientSuggestionsは[文字列]であり、allKeysは[AnyObject] –

+0

です。私の回答を編集します –

関連する問題