2017-08-29 6 views
0

Swift 3でJSONデータを解析するのが本当に混乱しています。これはJavascriptの背景から来ると予想していたよりもはるかに困難です。 APIからSwift 3 JSON配列を解析してループオーバー

応答:

[ 
{ 
    "ID": 1881, 
    "image": "myimageURL", 
}, 
{ 
    "ID": 6333, 
    "image": "myimageURL", 
} 
] 

マイスウィフトコード:JavaScriptで

let images = [] as Array 

override func viewDidLoad() { 
    super.viewDidLoad() 

    Alamofire.request(URL(string: "myURL")!, 
     method: .get) 
     .responseJSON(completionHandler: {(response) -> Void in 
      print(response) 
      //Parse this response. Then loop over and push value of key "image" of each object into the images array above. 
    }) 
} 

私は単にライン上の

let images = [] 
let parsed = JSON.parse(response) 
for(var i in parsed){ 
    images.push(parsed[i].image) 
} 
+2

を解析するためのコードの下に挿入:スウィフト3は、ありません。 NSArrayの代わりにSwift Type Arrayを使用してください。 – Larme

答えて

2
var images: [String] = [] 

Alamofire.request("https://apiserver.com/api/images") //replace url with your url 
      .responseJSON { response in 
       if let jsonArray = response.result.value as? [[String: Any]] { 
        print("JSON: \(json)") // serialized json response 
        for json in jsonArray { 
         let image = json["image"] 
         images.append(image) 
        } 
       } 
      } 
0
let images = [] as NSArray 

を行うだろうが正常に動作しますが、より良いためあなたはsの一般的な配列にすることができますアプローチtringsは

var images = [String]() 

と一直線上に置き換えるとNSArray`として `JSONオブジェクトを

switch(response.result) { 
case .success(_): 

if response.result.value != nil 
{ 
    let array = response.result.value as! [[String: String]] 
    array.forEach{ dictionary in 
     images.append(dictionary["image"] ?? "") 
    } 
} 

case .failure(_): 
break 
}