Не получен обратный звонок после расчета ETA от Here Api - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь вычислить ETA между двумя точками, используя HERE api, но я не получаю обратный вызов от функции вычисления 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 голосов
/ 19 февраля 2019

Ваш coreRouter объявлен локально в функции, что означает, что он будет удален, как только функция будет завершена.К моменту завершения асинхронного метода ваш объект будет удален.

Решение:

объявляет let coreRouter = NMACoreRouter() на уровне класса и вызывает метод только внутри функции

Грязная альтернатива

обернуть вашу асинхронную функцию calculateRoute вызов внутри DispatchQueue.main.async { /* place here */ }

Настоятельно предложил бы первый вариант, так как второй заморозил бы любую другую логикудо завершения называется (но технически это работает :)).

...