在读取加速度计数据时发现为零

时间:2015-03-16 11:09:24

标签: ios swift accelerometer

我在使用加速度计时遇到问题,我不明白为什么我无法读取数据:

我检查加速度计是否可用:

if self.motionManager.accelerometerAvailable == true {

我启动加速度计更新:

self.motionManager.startAccelerometerUpdates()

然后我尝试读取数据,但是我收到错误:

println("data.acceleration.x is: \(self.motionManager.accelerometerData.acceleration.x)")

在解包可选值时意外发现nil

为什么会这样?

(如果我使用startAccelerometerUpdatesToQueue它可以工作,但更新太慢了)

感谢任何帮助, 谢谢

2 个答案:

答案 0 :(得分:1)

如果没有可用的话,

accelerometerData可以是nil。它被声明为隐式解包的可选CMAccelerometerData!,因此您应该在使用之前检查nil

if self.motionManager.accelerometerData != nil {
    // Got it
}

答案 1 :(得分:0)

我假设self.motionManager有一个可选的后缀(即?)   - 你应该安全地解开这样的变量,以避免出现意想不到的声明

var motionManager : CMAccelerometerData?

if let motionManager = self.motionManager {
    println("my motion manager is \(self.motionManager.accelerometerData.acceleration.x)")
}