2015-09-01 115 views
2

無論我使用拉式還是推式方法,Core Motion都不會輸出。我在iPhone 4s iOS 8.4上使用Xcode 7.0 beta 6和Swift 2.0。Core Motion在Xcode 7中不起作用Swift 2.0

let manager = CMMotionManager() 

    manager.accelerometerUpdateInterval = 0.3 
    manager.startAccelerometerUpdates() 
    print(manager.accelerometerData?.acceleration.x) 

    manager.accelerometerUpdateInterval = 0.3 
    manager.startAccelerometerUpdatesToQueue(NSOperationQueue()) { (data: CMAccelerometerData?, error: NSError?) in 
     guard data != nil else { 
      print("There was an error: \(error)") 
      return 
     } 
     print(data!.acceleration.x) 
    } 

有人知道我在做什麼錯嗎?謝謝。

回答

4

有趣的事情......我來到這裏尋找這個同樣的問題的答案。 ;)

據我所知(我不是Swift或XCode的專家),問題是在覈心運動的指令之間沒有足夠的時間來獲取數據:如果您調用manager.startAccelerometerUpdates(),然後一會兒,請求加速度計數據,那麼你就沒有問題了。如果在我的SpriteKit遊戲中,我開始在GameViewController的viewDidLoad方法中啓動加速度計更新,然後在場景的didMoveToView方法中請求加速度計數據,然後獲取數據。但是如果我啓動加速度計並以相同的方法詢問數據,那麼我什麼也得不到(當我在轉換到其他場景之前啓動加速度計,然後在下一個場景中詢問數據時,我什麼也得不到)。

我不知道這是正常還是錯誤,但至少我發現了一個暫時的解決方案:在獲取數據之前儘可能多地給核心運動。

+0

非常感謝你! – jaqueamo

+0

沒問題,很高興能有所幫助。 :)由於我寫了這篇文章,我已經通過大量實驗證實了這一結論。你可以做的另一件事是創建一個循環並等待數據到達(我使用XCode的遊戲模板中的Update循環)。 – RoberRM

+0

這是很奇怪的廢話 –

相關問題