传讯被宣布为
let accelManager = CMSensorRecorder()
let motionManager = CMMotionManager()
var arrayOfDicts:[NSDictionary] = []
函数定义为
func startMotionManager() {
WKInterfaceDevice.current().play(.start)
self.arrayOfDicts = []
if motionManager.isAccelerometerAvailable {
motionManager.accelerometerUpdateInterval = 0.01
let handler:CMAccelerometerHandler = {(data: CMAccelerometerData?, error: NSError?) -> Void in
self.arrayOfDicts.append([
"timestamp":data!.timestamp,
"x":data!.acceleration.x,
"y":data!.acceleration.y,
"z":data!.acceleration.z
])
//print("timestamp: ", data!.timestamp, ", x: ", data!.acceleration.x, ", y: ", data!.acceleration.y, ", z: ", data!.acceleration.z)
}
motionManager.startAccelerometerUpdates(to: OperationQueue(), withHandler: handler)
}
}
错误发生在“let handler”行。
无法推断“泛型参数”Element
调用函数“append”时
我做了一些探索,认为这是因为编者不确定什么类型的数组“arrayOfDicts”是…但我可能是远离。我们将非常感谢您对本课程的任何帮助和/或教育。
-马特
最佳答案
关闭类型已更改为:
public typealias CMAccelerometerHandler = (CMAccelerometerData?, Error?) -> Swift.Void
(来自生成的“CMMotionManager.h”头)
尝试将该行中的
CMAccelerometerHandler
更改为NSError?
。有时可能需要将“无法推断”之类的错误消息设置为“可能存在与类型相关的错误”。发送bug report以推广Apple(或swift.org)以改进此类诊断。