2015-09-01 4 views
2

Я не получаю выход от Core Motion, независимо от того, как я использую метод pull или push. Я использую Xcode 7.0 beta 6 с Swift 2.0 на iPhone 4s iOS 8.4.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(), а затем, после некоторое время, попросите акселерометрData, тогда у вас не будет проблем. Если в моей игре SpriteKit я запускаю обновления акселерометра по методу viewDidLoad GameViewController, и я прошу данные акселерометра в методе сцены didMoveToView, тогда я получаю данные. Но если я запустил акселерометр и попрошу данные по тому же методу, то ничего не получаю (ничего не получаю и при запуске акселерометра прямо перед переходом на другую сцену, а затем запрашиваю данные в следующей сцене).

Я не знаю, было ли это нормально или ошибка, но, по крайней мере, я нашел временное решение: дайте ядро-движение как можно больше времени, прежде чем получать данные.

+0

Эй, спасибо большое! – jaqueamo

+0

Без проблем, рад помочь. :) Поскольку я написал это, я подтвердил этот вывод многочисленными экспериментами. Еще одна вещь, которую вы можете сделать, это создать цикл и дождаться появления данных (я использую цикл обновления в шаблоне игры XCode). – RoberRM

+0

Святое дерьмо это странно –