Core Motion:可选类型 'NSOperationQueue?' 的值未展开

Core Motion: Value of optional type 'NSOperationQueue?' not unwrapped

我正在按照 RayWenderLich 网站上的教程进行操作,但是,我停留在有关 Core Motion 的部分。

// CoreMotion
    // 1
    motionManager.accelerometerUpdateInterval = 0.2
    // 2
    motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue(), withHandler: {
        (accelerometerData: CMAccelerometerData!, error: NSError!) in
        // 3
        let acceleration = accelerometerData.acceleration
        // 4
        self.xAcceleration = (CGFloat(acceleration.x) * 0.75) + (self.xAcceleration * 0.25)
    })

我尝试修复错误,但最终出现更多错误。

感谢任何帮助。谢谢。

NSOperationQueuecurrentQueue returns 是可选的,因此您需要解开可选的包装,NSOperationQueue.currentQueue()!

// CoreMotion
// 1
motionManager.accelerometerUpdateInterval = 0.2
// 2
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: {
    (accelerometerData: CMAccelerometerData?, error: NSError?) in
    // 3
    let acceleration = accelerometerData.acceleration
    // 4
    self.xAcceleration = (CGFloat(acceleration.x) * 0.75) + (self.xAcceleration * 0.25)
})

此外,您用作处理程序的闭包的参数类型有误。这是typealias CMAccelerometerHandler = (CMAccelerometerData?, NSError?) -> Void