2016-05-03 3 views
0

Я следую учебному курсу с сайта RayWenderLich, однако я застрял в роли о Core Motion.Core Motion: значение необязательного типа 'NSOperationQueue?' не разворачивается

// 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) 
    }) 

Я пытаюсь исправить ошибку, но в итоге я получаю больше ошибок.

Любая помощь приветствуется. Спасибо.

+1

Связано это: http://stackoverflow.com/a/24034551/620197 –

ответ

0

NSOperationQueuecurrentQueue возвращает необязательный вариант, поэтому вам необходимо развернуть дополнительный, 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

+0

Я попытался это сделать, но в итоге я получаю сообщение об ошибке «Невозможно преобразовать значение типа» (CMAccelerometerData !, NSError!) ->() ' –

+0

Итак, у вас есть две проблемы: одна с разворачиванием необязательной и одна с типами параметров закрытия withHandler. – Ch0k0l8

+0

@ J.Mendoza answer updated. – Ch0k0l8

Смежные вопросы