NSError
был переименован в Error
в Swift 3, поэтому, пожалуйста, сделать свой Error
переменную верблюжьего (в нижнем регистре в вашей ситуации). Это должно было быть camelCase, так как это переменная, так или иначе.
Вот новая версия функции с тем, что и другими незначительными ошибками фиксированных (ПРИМЕЧАНИЯ МОЕГО КОММЕНТАРИЯ О подкачке X И Y):
override func didMove(to view: SKView) {
manager.accelerometerUpdateInterval = 0.1
manager.startAccelerometerUpdates(to: OperationQueue.main) { data, _ in
if let accelerometerData = data {
// IMPORTANT: Are you intentionally swapping x and y here? -----------> ↓
self.physicsWorld.gravity = CGVector(dx: accelerometerData.acceleration.y * 10,
dy: accelerometerData.acceleration.x * 10)
}
}
}
А вот первоначальная функция только с переменным переименованным (Примечание: Есть несколько ошибок программирования здесь, я не рекомендую использовать его):
override func didMove(to view: SKView) {
manager.startAccelerometerUpdates()
manager.accelerometerUpdateInterval = 0.1
manager.startAccelerometerUpdates(to: OperationQueue.main) { (data, error) in
if let accelerometerData = self.manager.accelerometerData {
self.physicsWorld.gravity = CGVector(dx: accelerometerData.acceleration.y * 10, dy: accelerometerData.acceleration.x * 10)
}
}
}
EDIT: Вы не должны использовать основную очередь, что OperationQueue
для ПОЛУЧАТЬ обновление акселерометра. См. Apple's documentation.
Вы сказали: «он прекратил работать». Я могу только предположить, что вы имеете в виду, что он компилируется и работает отлично, но ваш обработчик никогда не называется. Это правильно? – Coder256