从Here Api计算ETA后未收到回调

时间:2019-02-19 13:21:52

标签: ios swift here-api

我正在尝试使用HERE api计算两个位置之间的ETA,但是我没有从ETA计算功能获得回调。甚至在完成处理程序内部也没有得到任何错误。

let routeMode = NMARoutingMode()
routeMode.transportMode = NMATransportMode.car
routeMode.routingOptions.insert(NMARoutingOption.avoidHighway)
routeMode.routingType = NMARoutingType.fastest
routeMode.resultLimit = 1

var stops = [Any]()

let startPoint = NMAGeoCoordinates(latitude: 52.562755700200796, longitude: 13.34599438123405)

let endPoint = NMAGeoCoordinates(latitude: 52.520720371976495, longitude: 13.332345457747579)

stops.append(startPoint)
stops.append(endPoint)

let coreRouter = NMACoreRouter()
coreRouter.calculateRoute(withStops: stops, routingMode: routeMode) { (routeResult, error) in
/* Not getting callback inside this block. Not even any errors in console */
}

1 个答案:

答案 0 :(得分:0)

您的coreRouter是在函数内本地声明的,这意味着一旦函数运行完毕,它将被解雇。异步方法完成时,您的对象已被删除。

解决方案:

在类级别声明let coreRouter = NMACoreRouter(),仅在函数内调用方法

混乱的选择

calculateRoute内包装您的异步函数DispatchQueue.main.async { /* place here */ }

强烈建议第一种选择,因为第二种选择会冻结任何其他逻辑,直到调用完成为止(但从技术上讲,它是可行的:))。