2017-08-29 34 views
0

我對於在Swift 3中解析JSON數據感到非常困惑。這比我預期會來自Javascript背景更困難。從APISwift 3解析JSON數組然後循環播放

響應:

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

我的銀行代碼:

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. 
    }) 
} 

在Javascript中我根本就

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

'作爲NSArray':在夫特3,不要。喜歡Swift Type Array而不是NSArray。 – 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]() 

並插入以下代碼來解析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 
}