“无法解开Optional.None”,我无法弄清楚原因

时间:2014-06-20 19:17:31

标签: swift

这会产生"致命错误:无法解包Optional.None"而且我似乎不明白为什么

var motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.2
motionManager.startAccelerometerUpdates()
var accelerationData = motionManager.accelerometerData
var accel = accelerationData.acceleration.x

如果有人能帮助我,那就太好了。

1 个答案:

答案 0 :(得分:1)

问题是accelerationData是零并且你没有检查这个。来自docs

  

如果没有加速度计数据可用,则此属性的值为nil。

您应该检查以确保在调用方法之前确实存在数据,如此

if let accelerationData = motionManager.accelerometerData {
    var accel = accelerationData.acceleration.x
}

这将确保如果没有数据,您的应用程序将会崩溃。现在确保你获得一些数据。

您没有获得任何数据,因为您在初始化核心动作管理器后立即要求提供数据。您可以在检查前等待几秒钟来显示。您可以在if let上方添加NSThread.sleepForTimeInterval(3)并运行项目,它将输入if let。确保您使用的是实际设备,模拟器不会生成任何运动数据。