'Аргумент передан для вызова, который не принимает аргументов', создающий экземпляр HKWorkoutRouteQuery - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь прочитать данные о маршруте HKWorkout, но не могу, потому что в редакторе я получаю сообщение об ошибке «Аргумент передан в вызов без аргументов», когда я пытаюсь создать экземпляр HKWorkoutRouteQuery смой восстановленный образец.

enter image description here

Согласно документации Apple мой код выглядит следующим образом:

func getRouteData() -> [(Double)] {
    // Return early if not a distance workout
    guard self.shouldShowDistance else {
        return []
    }

    let store = HKHealthStore()
    let runningObjectQuery = HKQuery.predicateForObjects(from: self.workout)
    let routeQuery = HKAnchoredObjectQuery(type: HKSeriesType.workoutRoute(), predicate: runningObjectQuery, anchor: nil, limit: HKObjectQueryNoLimit) { (query, samples, deletedObjects, anchor, error) in

        guard error == nil else {
            // Handle any errors here.
            fatalError("query failed")
        }

        guard samples != nil else {
            fatalError("No samples")
        }

        guard samples!.count > 0 else { fatalError("No samples") }

        guard let route = samples?.first as? HKWorkoutRoute else {
            fatalError("No samples")
        }

        // Create the route query.
        let query = HKWorkoutRouteQuery(route: route) { (query, locationsOrNill, done, errorOrNil) in

            // This block may be called multiple times.

            if let error = errorOrNil {
                // Handle any errors here.
                return
            }

            guard let locations = locationsOrNil else {
                fatalError("*** Invalid State: This can only fail if there was an error. ***")
            }

            // Do something with this batch of location data.

            if done {
                // The query returned all the location data associated with the route.
                // Do something with the complete data set.
            }

            // You can stop the query by calling:
            // store.stop(query)

        }
        store.execute(query)

    }

    store.execute(routeQuery)

    return []
}

Это не имеет смысла для меня, потому что собственные документы Apple требуют, чтобы HKWorkoutRouteQuery создавался с образцом.

Любая помощь будет принята с благодарностью.Большое спасибо.

1 Ответ

0 голосов
/ 28 июня 2018

Apple вернулась ко мне через Bug Reporter. Проблема в том, что я забыл импортировать CoreLocation. Вы можете исправить эту ошибку, добавив следующую строку в начало вашего файла.

import CoreLocation

Кроме того, я думаю, что это отличный пример важности написания описательных ошибок. Если бы в ошибке упоминалось что-то о полученном завершении, требующем CoreLocation, я бы смог решить это самостоятельно.

...