2016-08-07 7 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() 

OK, więc tutaj otrzymuję dane z internetowego json, a następnie przechowuję je jako NSDictionary w jsonresult. Muszę uzyskać wszystkie klucze i wartości jak w dwóch oddzielnych tablicach?Jak uzyskać wszystkie klucze i wartości w oddzielnych tablicach ciągów od NSDictionary w Swift?

Zasadniczo Chcę to

jsonresult.allkeys -> tablicy ciągów
jsonresult.allvalues ​​-> tablicy String

Odpowiedz

19

Można użyć:

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

Wartość typu " NSData "nie ma członka" flatMap " –

+0

@AniketPatil, poprawione, powinno to być' jsonResult', a nie 'jsonData' – Khundragpan

3

Jest to dość proste, ponieważ używasz JsonResult jak NSDictionary.

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

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

W jesteś case

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

var values:[String] 

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

(Array) clientSuggestions = jsonResult.allKeys; Otrzymuję komunikat o błędzie: ** Nie można przydzielić wartości typu "[AnyObject]", aby wpisać "[String]" ** –

+0

clientSuggestions to [String] a allKeys to [AnyObject] –

+0

edytuję moją odpowiedź –

Powiązane problemy