Swift 3: conversión no válida del tipo de function de lanzamiento

Soy nuevo en veloz y
No entiendo por qué estoy recibiendo este error incluso haciendo el tratamiento do catch .

He estado leyendo preguntas similares y hasta ahora ninguno de ellos ha resuelto este error:
Invalid conversion from throwing function type '(_) throws -> (). to non-throwing function type '([BeaconModel]) -> ()' Invalid conversion from throwing function type '(_) throws -> (). to non-throwing function type '([BeaconModel]) -> ()' en la línea BeaconModel.fetchBeaconsFromRestApi(completionHandler: { .....

La pieza de código con el error:

 do{ let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] let db = try Connection("\(path)/db.sqlite3") let beaconsTbl = Table("beacons") let id = Expression<Int64>("id") let uuid = Expression<String>("uuid") let major = Expression<String>("major") let minor = Expression<String>("minor") try db.run(beaconsTbl.create { t in t.column(id, primaryKey: true) t.column(uuid) t.column(major) t.column(minor) }) BeaconModel.fetchBeaconsFromRestApi(completionHandler: { beacons in for item in beacons{ let insert = beaconsTbl.insert(id <- item.id!, uuid <- item.uuid!, major <- item.major!, minor <- item.minor!) try db.run(insert) } }) } catch { print("Error creating the database") } 

El método de búsqueda:

 static func fetchBeaconsFromRestApi( completionHandler: @escaping (_ beacons: [BeaconModel]) -> ()){ Alamofire.request(Constants.Beacons.URLS.ListAllbeacons).responseArray(keyPath: "data") { (response: DataResponse<[BeaconModel]>) in let beaconsArray = response.result.value if let beaconsArray = beaconsArray { completionHandler(beaconsArray) } } } 

Utiliza Alamofire y AlamofireObjectMapper . ¿Puedes ver lo que me falta?

Gracias por cualquier ayuda

completionHandler en fetchBeaconsFromRestApi no debe lanzar. Por lo tanto, debe envolver todas las llamadas con do - catch :

 BeaconModel.fetchBeaconsFromRestApi(completionHandler: { beacons in for item in beacons{ let insert = beaconsTbl.insert(id <- item.id!, uuid <- item.uuid!, major <- item.major!, minor <- item.minor! do { try db.run(insert) } catch { print("Error creating the database") } } })