【问题标题】:Apple Watch and Swift crashes while calculating the device motion with CoreMotionApple Watch 和 Swift 在使用 CoreMotion 计算设备运动时崩溃
【发布时间】:2025-11-28 20:30:01
【问题描述】:

目前使用 Apple Watch 计算其偏航角、俯仰角和滚动角。

但是,当尝试使用 Core Motion 功能时,应用程序会崩溃。有人遇到过这个问题吗?

if motionManager.deviceMotionAvailable{
    self.referenceAttitude = self.deviceMotionManger.attitude
    let currentAttitude : CMAttitude = self.deviceMotionManger.attitude
    currentAttitude.multiplyByInverseOfAttitude(self.referenceAttitude)
    self.Yaw.setText( "Yaw " + String(format: "%.1f", currentAttitude.yaw))
    self.Pitch.setText( "Pitch " + String(format: "%.1f", currentAttitude.pitch))
    self.Roll.setText("Roll " + String(format: "%.1f", currentAttitude.roll) )
}

else {
    self.Yaw.setText("device motion is not" + String(motionManager.deviceMotionActive))
}

【问题讨论】:

  • 崩溃并出现什么错误?
  • 下面的评论回答了我的问题。 Apple Watch 上的其他传感器都不起作用。 @zoul

标签: swift apple-watch watchos-2 core-motion devicemotion


【解决方案1】:

Apple Watch 提供的唯一 Core Motion 数据是原始加速度计数据。

手表不会提供原始陀螺仪数据、原始磁力计数据或处理过的设备运动数据; deviceMotionAvailable 将始终返回 false。

至于崩溃,当您的隐式展开 Yaw 标签的出口未连接到情节提要时,您将收到“致命错误:在展开可选值时意外发现 nil”。

【讨论】:

  • 如何使用加速度计数据来获取设备的偏航、俯仰和滚动? @PetahChristian
  • 您可以尝试一些other answers,但仅使用原始加速度计数据确实不切实际或不可能。你可能想submit a feature request
最近更新 更多