devuelve la matriz de objects con Alamofire

En mi aplicación estoy usando AlamofireObjectMapper. Quiero hacer un método que devuelva una matriz de objects. Con la ayuda de Alamofire, hice una request GET, que da la respuesta como responseArray. Con el uso de array de funciones void listOfType siempre tiene valores. Pero cuando uso una function no vacía que debería devolver la matriz del object MedicineType , array listOfType es nil. Entonces, aquí está mi código.

 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!; } 

Como dije en mi comentario, debes hacer esto al cierre, en lugar de devolverlo, porque tu llamada para Alamofire es asincrónica, de modo que tu respuesta será asincrónica

Este es un ejemplo, debe agregar su identificador de error

  func getAll(fishedCallback:(_ medicineTypes:[MedicineType]?)->Void){ 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 } finishedCallback(response.result.value as! [MedicineType]) default: log.error("Error", status); finishedCallback(nil) } } } } 

Utilizarlo

  classObject.getAll { (arrayOfMedicines) in debugPrint(arrayOfMedicines) //do whatever you need } 

Espero que esto ayude

Prueba el cierre

 func getAll(_ callback :(medicineTypes:[MedicineType]?) -> Void) -> Void { 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; callback(listOfTypes) default: log.error("Error", status); callback({}) } } } 

}