2016-07-14 12 views
0

konvertiert werden Es besagt, dass Wert des Typs (CMAccelerometerData!, NSError!) nicht konvertiert werden kann. Wie kann ich es ändern?Wert des Typs (CMAccelerometerData !, NSError!) Kann nicht in

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

Benutzen Sie den Code-Vervollständigung. Geben Sie die Methode erneut ein. Oder geben Sie in0 (Null) in das Suchfeld ein und fügen Sie 'startAccelerometerUpdatesToQueue' ein, klicken Sie dann auf' CMAccelerometerHandler' und vergleichen Sie die Signaturen. Ein Entwickler muss sich daran gewöhnen, die richtigen Methodensignaturen in der Dokumentation nachzuschlagen. – vadian

Antwort

0

Sollte es nicht sein:

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

Reference

+0

Ich denke Frameworks, die keine Annullierbarkeiten haben, haben ihre Variablen als force-unwrapped-optional deklariert. Dies könnte einer von denen sein. – EmilioPelaez

2

Lassen Sie den Compiler die Typen in der Schließung folgern:

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