EDIT呼び出されていない完了ハンドラー:私は私のシステムではスウィフト3.0とAlamofire 4.0スウィフト3 -
を使用していを、私は材料のリストを持って、各材料は、バンドルのリストが含まれています。私はこれらのバンドルをwebservice経由でリクエストして、次のビューを作成しようとしています(この例では、取り込まれたデータのみを印刷しようとしています)が、完了ハンドラは呼び出されていません(ps:私は初心者です。私は非同期progでリードしています)。どんな考え?
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)"という行が決して呼び出されていないことに気づいた。私はあなたが間違ってあなたのAlamofire要求を処理するかもしれないと思う理由は... :(
'responseJSON'に渡されたブロック内のコードが呼び出されますか?エンドポイントがJSON応答を返すのですか? – crizzis
' result = response.result.value' Alamofireが返ってきているかどうかを確認することができます。もし 'print(" response:\(response.response) ")'それは戻っている。私は問題が 'response.result.value'であると確信しています – Chris