Apple Watch 和 Swift 在使用 CoreMotion 计算设备运动时崩溃

Posted

技术标签:

【中文标题】Apple Watch 和 Swift 在使用 CoreMotion 计算设备运动时崩溃【英文标题】:Apple Watch and Swift crashes while calculating the device motion with CoreMotion 【发布时间】:2016-05-19 06:42:48 【问题描述】:

目前使用 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 【参考方案1】:

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

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

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

【讨论】:

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

以上是关于Apple Watch 和 Swift 在使用 CoreMotion 计算设备运动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 在 Apple Watch 上添加下拉刷新功能

当 iPhone 不在附近时,使用 Swift 将数据从 Apple Watch 发送到 iPhone

在 Swift 中为 Apple Watch 制作简单的淡入淡出动画?

对于 Swift 中的 Apple Watch OS,如何在 WCSession 激活完成后运行函数?

Apple Watch 不向 iPhone 传递数据 - Swift

swift 评估你的App是否加入Apple Watch功能