传讯被宣布为

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)以改进此类诊断。

08-16 21:53