2016-07-14 2 views
0

Il ne cesse de dire Impossible de convertir la valeur de type (CMAccelerometerData!, NSError!). Comment puis-je le changer?Impossible de convertir la valeur de type (CMAccelerometerData !, NSError!) En

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

Utilisez le code d'achèvement. Retapez la méthode. Ou tapez ⇧⌘0 (zéro) dans le champ de recherche et collez 'startAccelerometerUpdatesToQueue', puis cliquez sur' CMAccelerometerHandler' et comparez les signatures. Un développeur doit s'habituer à rechercher les signatures de méthode appropriées dans la documentation. – vadian

Répondre

0

Ne devrait-il:

(CMAccelerometerData?, NSError?) -> Void 
        ^  ^
         not ! 

Reference

+0

Je pense que les frameworks qui n'ont pas d'annotations de nullité ont leurs variables déclarées comme force-unwrapped-facultatif. Cela pourrait être l'un d'entre eux. – EmilioPelaez

2

Laissez le compilateur infère les types dans la fermeture:

CMMotionManager().startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!) { (accelerometerData, error) in 
    // 
}