2017-09-29 3 views
0

Voici ce que je l'ai fait:Je suis en train d'essayer de configuration coreMotion et je reçois cette erreur dans mon gestionnaire d'accélération?

 motion_manager.startAccelerometerUpdates(to: OperationQueue.current! , withHandler: { (AccelerometerData : CMAccelerometerData! , error : NSError!) -> Void 

      in 

       self.output_acceleratoin_data(acceleration: AccelerometerData.acceleration) 
       if (error != nil){ 

        print("\(error)") 
       } 



       } as! CMAccelerometerHandler ) 
       //the above line is where I get the error 







func output_acceleratoin_data(acceleration : CMAcceleration){ 

      print("\(acceleration.x) 2f ") 
      print("\(acceleration.y) 2f ") 
      print("\(acceleration.z) 2f ") 

    } 

l'erreur est le fil suivant: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

et avant toute chose apparaît sur l'écran de l'application se est écrasé. Une idée comment puis-je résoudre ce problème?

+0

Peut-être lié ... https://stackoverflow.com/questions/26637040/exc-bad-instruction-in-swift?rq=1 –

+0

'typealias CMAccelerometerHandler = (CMAccelerometerData ?, Erreur?) -> Void' C'est comment c'est défini, avec '?' et non '!'. De plus, il n'y a pas de 'NSError' (évitez-les dans Swift 3). – Larme

Répondre

0

Cette partie:

as! CMAccelerometerHandler 

ne devrait pas être nécessaire que le bloc vous passez est déjà un CMAccelerometerHandler et je devine qu'elle embrouille ou dérange les choses plus qu'il ne devrait.

Je devine que c'est ce que Xcode vous suggère de le faire, mais ... Xcode a eu tort dans ce cas :)

Comme le paramètre withHandler: est le dernier paramètre de la fonction, vous pouvez le remplacer par un ce que l'on appelle trailing closure

Donc. Essayez de remplacer votre code par ceci:

motion_managerstartAccelerometerUpdates(to: OperationQueue.current!) { (data, error) in 
    self.output_acceleratoin_data(acceleration: AccelerometerData.acceleration) 
    if (error != nil){ 
     print("\(error)") 
    } 
} 

Hope that helps.