我正在尝试设置coreMotion,我在加速处理程序中遇到此错误?

时间:2017-09-29 06:03:24

标签: swift xcode accelerometer core-motion

以下是我所做的:

     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 " )

    }

错误是以下主题:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

在屏幕上显示任何内容之前,应用程序崩溃了。知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

这部分:

as! CMAccelerometerHandler

不应该是必要的,因为您传递的阻止已经是CMAccelerometerHandler,我猜它会使事情混乱或扰乱。

我猜这是Xcode建议你做的但是......在这种情况下Xcode是错误的:)

由于withHandler:参数是该函数的最后一个参数,您可以将其替换为所谓的trailing closure

因此。尝试用以下代码替换代码:

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

希望有所帮助。