致命错误:在展开可选值CMMotionManager时意外发现nil

时间:2014-12-27 18:04:01

标签: swift cmmotionmanager

尝试在swift中实现这个raywenderlich tutiorial,但不幸的是我

  fatal error: unexpectedly found nil while unwrapping an Optional value

在线

    let acceleration :CMAcceleration = self.motionManager!.accelerometerData.acceleration

任何身体都可以帮助它为什么会出现

请从here

下场景文件

1 个答案:

答案 0 :(得分:0)

self.motionManager为nil并且您尝试打开nil值。始终通过使用可选绑定检查nil或使用可选链接来解包可选值。

if let motionManager = self.motionManager {
   if let accelerometerData = motionManager.accelerometerData {
      let acceleration :CMAcceleration = accelerometerData.acceleration
   }
 }
 else {
   print("motion manager is nil")
 }

如果您已初步motionManager,则应检查您的代码。

修改

我检查了文档

  

返回加速度计数据的最新样本,如果没有,则返回nil   可用。        * /

var accelerometerData: CMAccelerometerData! { get }

所以你还需要为accelerometerData检查nil。它可以是nil并且它是隐式包装的可选项,因此当数据不可用时会崩溃。