在我的應用程序中,我使用AlamofireObjectMapper。 我想做一個返回對象數組的方法。在Alamofire的幫助下,我做了一個GET請求,它將響應作爲responseArray。 使用void函數數組listOfType
始終有值。 但是當我使用非void函數應該返回對象數組MedicineType
,數組listOfType
爲零。 所以這裏是我的代碼。返回Alamofire對象數組
func getAll() -> [MedicineType] {
var listOfTypes: [MedicineType]?;
Alamofire.request(BASE_URL, method:.get)
.responseArray(keyPath:"value") {(response: DataResponse<[MedicineType]>) in
if let status = response.response?.statusCode {
switch(status) {
case 200:
guard response.result.isSuccess else {
//error handling
return
}
listOfTypes = response.result.value;
default:
log.error("Error", status);
}
}
}
return listOfTypes!;
}
你需要這樣做的關閉,而不是回報,因爲你的呼籲Alamofire是異步所以你的反應將是異步 –
看爲「Swift + Closure + Async」。如果仔細檢查,'listOfTypes!;'應該被調用BEFORE'listOfTypes = response.result.value;'(你可以添加打印) – Larme