2015-10-27 22 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 } 
} 
相關問題