2016-09-17 3 views
0

Я пытаюсь поэкспериментировать с акселерометром iPhone, но я получаю сообщение об ошибке «Thread 1: EXC_BREAKPOINT (code = 1, subcode = 0x1000a3734). Я читал, что это может быть из-за точки останова , но я удалил все точки останова, и все еще произошла ошибка, также я прочитал, что это может быть из-за переменной nil, но даже если обработчик пуст, ошибка все равно происходит. Im в убытке, и я преподаю сам язык. используя быстрые 3.0 для этого.CMAccelerometerHandler thread1 error

import UIKit 
import CoreMotion 

class ViewController: UIViewController { 

//Variables 

    var Accelx: Double = 0.0 
    var Accely: Double = 0.0 
    var Accelz: Double = 0.0 
    var Gyrox: Double = 0.0 
    var Gyroy: Double = 0.0 
    var Gyroz: Double = 0.0 

    var motionManager = CMMotionManager() 

//IBOutlets 
    @IBOutlet var lblX: UILabel? 
    @IBOutlet var lblY: UILabel? 
    @IBOutlet var lblZ: UILabel? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.resetValues() 

     motionManager.accelerometerUpdateInterval = 0.2 
     motionManager.startAccelerometerUpdates(to: 
      OperationQueue.current!, 
      withHandler: 
       {(accelData: CMAccelerometerData, Error: NSError) 
        in 
        self.outputAccelData(acceleration:accelData.acceleration) 
        if(Error != nil){ 
         //print("\(Error)") 
        } 
       } as! CMAccelerometerHandler ) 

     super.viewDidLoad() 
    } 

    func outputAccelData(acceleration: CMAcceleration){ 
     lblX?.text = "X: \(acceleration.x)" 
     lblY?.text = "Y: \(acceleration.y)" 
     lblZ?.text = "Y: \(acceleration.z)" 
    } 
} 

ответ

1
//Motion Sensor 
    if (motionManager.isAccelerometerAvailable){ 
     motionManager.startAccelerometerUpdates(
      to: OperationQueue.current!, 
      withHandler: {(accelData: CMAccelerometerData?, errorOC: Error?) in 
       self.outputAccelData(acceleration: accelData!.acceleration) 
        }) 
    } 

    if (motionManager.isGyroAvailable){ 
     motionManager.startGyroUpdates(
      to: OperationQueue.current!, 
      withHandler: { (gyroData: CMGyroData?, errorOC: Error?) in 
       self.outputGyroData(gyro: gyroData!) 
     }) 
    } 

для тех, кто, случается встретить эту проблему, это решение. Я считаю, что это было то, что CMAccelerometerData и NSError ш не будучи развернутым и что обработчик CMAccelerometerHandler нуждается в тех двух, которые будут развернуты. Также я пытался использовать анонимную функцию в качестве обработчика.

P.S. Ура! У меня есть значок перелива!

+0

... это спасло мою жизнь сегодня. – narner

0

Тип второго параметра обработчика должен быть Error, а не NSError.

Смежные вопросы