2015-10-27 2 views
0

Итак, я пытаюсь получить данные от датчика акселерометра, но я продолжаю получать эту ошибку, даже несмотря на то, что я попытался «!» а также '?' и «если да». Я не могу придумать что-то еще, и странно думать, что тот же самый код работает в учебнике youtube, откуда я его получил. Вот код:Ошибка: значение необязательного типа 'NSOperationQueue?' не разворачивается; вы, человек, использовали '!' или '?'?

// Instance variables 
var currentMaxAccelY: Double = 0.0 
var currentMaxAccelZ: Double = 0.0 
lazy var motionManager = CMMotionManager() 

// functions 
override func viewDidLoad() { 
currentMaxAccelY = 0.0 
currentMaxAccelZ = 0.0 

    // Do any additional setup after loading the view. 
    //video version 
    if (self.motionManager.accelerometerAvailable) { 

    self.motionManager.accelerometerUpdateInterval = 0.2 
    self.motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()){[weak self](accelerometerData: CMAccelerometerData!, error: NSError!) in //here i get the error 
     self.outputAccelerationData(accelerometerData.acceleration) 
     if (error != nil){ 
     print("\(error)") 

      } 
     } 
    } 

    else { 
     print("accelerometer not available") 
    } 

    super.viewDidLoad() 

} 

func outputAccelerationData(acceleration: CMAcceleration){ 
    jumpCounter?.text = "\(acceleration.z).2fg" 
    y?.text = "\(acceleration.y).2fg" 
    if fabs(acceleration.y) > fabs(currentMaxAccelY) { 
     currentMaxAccelY = acceleration.y 
    } 
    if fabs(acceleration.z) > fabs(currentMaxAccelZ) { 
     currentMaxAccelY = acceleration.z 
    } 
    yMax?.text = "\(currentMaxAccelY).2f" 
    zMax?.text = "\(currentMaxAccelZ).2f" 

} 

Любая помощь очень ценится ..

ответ

0

Это работает для меня

let motionManager = CMMotionManager() 
if let queue = NSOperationQueue.currentQueue() { 
    motionManager.startAccelerometerUpdatesToQueue(queue) { (data, error) -> Void in } 
} 
Смежные вопросы