这会产生"致命错误:无法解包Optional.None"而且我似乎不明白为什么
var motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.2
motionManager.startAccelerometerUpdates()
var accelerationData = motionManager.accelerometerData
var accel = accelerationData.acceleration.x
如果有人能帮助我,那就太好了。
答案 0 :(得分:1)
问题是accelerationData是零并且你没有检查这个。来自docs:
如果没有加速度计数据可用,则此属性的值为nil。
您应该检查以确保在调用方法之前确实存在数据,如此
if let accelerationData = motionManager.accelerometerData {
var accel = accelerationData.acceleration.x
}
这将确保如果没有数据,您的应用程序将会崩溃。现在确保你获得一些数据。
您没有获得任何数据,因为您在初始化核心动作管理器后立即要求提供数据。您可以在检查前等待几秒钟来显示。您可以在if let上方添加NSThread.sleepForTimeInterval(3)
并运行项目,它将输入if let。确保您使用的是实际设备,模拟器不会生成任何运动数据。