我正在通过以下方法从陀螺仪和加速度计收集数据:
motionManager.startAccelerometerUpdatesToQueue(accelQueue, withHandler: accelHandler)
Handler看起来像这样:
func accelHandler (accelerometerData : CMAccelerometerData!, error : NSError!){
//for saving
logging.accelerationX = accelerometerData.acceleration.x
logging.accelerationY = accelerometerData.acceleration.y
logging.accelerationZ = accelerometerData.acceleration.z
//for displaying
accelX.text = (NSString(format: "%.5f", accelerometerData.acceleration.x))
accelY.text = (NSString(format: "%.5f", accelerometerData.acceleration.y))
accelZ.text = (NSString(format: "%.5f", accelerometerData.acceleration.z))
}
logging.accelerationX是我自己的变量,accelX.text的类型为@IBOutlet weak var accelX:UILabel!。 处理程序可靠,但我没有在相应标签的屏幕上收到dataString。 有人建议吗?
答案 0 :(得分:1)
我猜这个问题是accelQueue
。您正在此队列上调用accelHandler
。这是一个后台队列(我猜)。但接着你正在与accelX
交谈,这是界面中的一个标签。您必须从不尝试与后台队列上的接口进行通信!所以在做这样的事情之前你需要走出主队列。