2016-05-03 4 views
0

Je suis un tutoriel sur le site web de RayWenderLich, mais je suis bloqué sur Core Motion.Core Motion: valeur du type facultatif 'NSOperationQueue?' Je ne suis pas déballé

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

J'essaie de réparer l'erreur, mais je me retrouve avec plus d'erreurs.

Toute aide est appréciée. Je vous remercie.

+1

Connexes: http://stackoverflow.com/a/24034551/620197 –

Répondre

0

Le currentQueue renvoie un optionnel donc vous devez déballer l'option, 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) 
}) 

De plus, la fermeture que vous utilisez comme gestionnaire a des types de paramètres incorrects. C'est typealias CMAccelerometerHandler = (CMAccelerometerData?, NSError?) -> Void

+0

J'ai essayé de le faire, mais je finis par obtenir une erreur qui dit: "Impossible de convertir la valeur de type" (CMAccelerometerData !, NSError!) ->() ' –

+0

Donc, vous avez deux problèmes: l'un avec le déballage d'un optionnel et l'autre avec les types de paramètres de la fermeture withHandler – Ch0k0l8

+0

@ J.Mendoza réponse mise à jour – Ch0k0l8