1
編輯:我使用雨燕3.0和4.0 Alamofire斯威夫特3 - 完成處理不叫
在我的系統我的材料清單,每種材料包含包的列表。我試圖通過web服務請求這些包,然後填充下一個視圖(在這個例子中,我試圖只打印取數據),但我的完成處理程序沒有被調用(PS:我是初學者,這是第一次我領先與異步編)。任何想法爲什麼?
從WS獲取數據的功能是:
func fetchBundles(materialCode: String, completion: @escaping ([ProductsBundle]?) -> Void) {
var bundlesAdded = [ProductsBundle]()
let url = baseApiURL + "material-cavaletes/" + materialCode
print(url)
Alamofire.request(url, headers: headers).responseJSON {
response in
if let result = response.result.value {
var results = JSON(result)["results"]
for res in results {
bundlesAdded.append(self.getBundleFromJson(json: res))
}
completion(bundlesAdded)
}
}
}
和函數調用,因此應該得到的數據,並更新視圖是:
WebApi.sharedInstance.fetchBundles(materialCode: materialBeingListed.id, completion: {
(bundlesAdded: [ProductsBundle]?) in
guard let myBundles = bundlesAdded else {
print("erro")
return
}
print (myBundles)
})
我把一些斷點處代碼,並注意到「print(myBundles)」行永遠不會被調用。我不知道爲什麼... :(
是否傳遞給'responseJSON'的塊內的任何代碼被調用?你確定端點返回一個JSON響應嗎? – crizzis
如果你在'if let result = response.result.value'你可以看到Alamofire是否正在返回,如果是這樣,嘗試添加'print(「response:\(response.response)」)'看看是什麼它正在返回。我敢打賭,問題出在'response.result.value'上 – Chris