Как получить информацию об ошибках из обновлений акселерометра iOS CoreMotion

#ios #swift #core-motion

Вопрос:

Я реализовал обработчик для получения событий обновления CoreMotion, таких как:

 func start() {
    let queue = OperationQueue()
    if motionManager.isAccelerometerAvailable {
        motionManager.startAccelerometerUpdates(to: queue, withHandler: handle)
    }
}

private func handle(_ data: CMAccelerometerData?, _ error: Error?) {
    if let error = error as? CMError {
        os_log("Error: %@", log: SensorCapturer.log, type: .error, error.rawValue)
    }
    guard let data = data else {
        fatalError("No Accelerometer data available!")
    }
    let accValues = data.acceleration
    // Do something with the accelerations
}
 

Получение этих обновлений работает нормально. Однако моя обработка ошибок кажется неправильной. В первой строке функции handle я получаю сообщение «Приведение от» Ошибка? «к несвязанному типу «Ошибка» всегда завершается ошибкой». Что, очевидно, верно, если вы посмотрите CMError документацию.

Реализация handle функции осуществляется правильно в соответствии с официальной документацией. И это работает. Чего я не понимаю, так это документации по параметру ошибки:


ошибка

Объект ошибки, представляющий ошибку, возникшую при предоставлении обновлений акселерометра. В случае возникновения ошибки следует остановить обновление акселерометра и сообщить пользователю о проблеме. Если ошибки нет, этот аргумент равен нулю. Основные ошибки движения относятся к домену CMErrorDomain и типу CMError.


Итак, к какому типу я должен отнести ошибку, чтобы получить дополнительную информацию о ней?