#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.
Итак, к какому типу я должен отнести ошибку, чтобы получить дополнительную информацию о ней?