swift - 无法转换类型的值“(数据 : CMAccelerometerData!,错误 : NSError!)

标签 swift

这是否意味着它应该被展开?

Cannot convert value of type '(data: CMAccelerometerData!, err: NSError!) -> Void' to expected argument type 'CMAccelerometerHandler' (aka '(Optional, Optional) -> ()')

为什么 CMAccelerometerData 与 accelerometerUpdateHandler 不兼容?

    // error
    motionManager.startAccelerometerUpdatesToQueue(motionHandlingQueue, withHandler: accelerometerUpdateHandler())


    // snip

func accelerometerUpdateHandler() -> (data: CMAccelerometerData!, err: NSError!) -> Void {
    let idleThreshold = 0.1

    var log = [Double]()

    var samplingCountdown: Int = 0

    return { (data: CMAccelerometerData!, err: NSError!) -> Void in

        let _stable = abs(data.acceleration.x) < idleThreshold && abs(data.acceleration.y) < idleThreshold && data.acceleration.z < -0.75

最佳答案

按如下方式定义您的加速度计处理程序:

func accelerometerHandler(data: CMAccelerometerData?, error: NSError?) -> Void {
    guard let data = data where error == nil else { return }
    let idleThreshold = 0.1
    var log = [Double]()
    var samplingCountdown: Int = 0
    let _stable = abs(data.acceleration.x) < idleThreshold && abs(data.acceleration.y) < idleThreshold && data.acceleration.z < -0.75
    // the rest of your code
}

调用时:

motionManager.startAccelerometerUpdatesToQueue(motionHandlingQueue, withHandler: accelerometerHandler)

关于swift - 无法转换类型的值“(数据 : CMAccelerometerData!,错误 : NSError!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38003885/

相关文章:

ios - 如何将 content_available 添加到 Firebase Notification Composer

swift 3传递数组中的Json

swift - 用于 UiWebView 的 UIMarkupTextPrintFormatter

swift - NSPredicate 比较 Int32

快速,可选展开,如果条件反转

ios - 自定义 UITableView Cell 的堆栈 View 无法检测到 super View 维度

swift - 在 iOS 中注销 sinch 用户

ios - Xcode 7 Swift 2 后台页面加载

ios - Firebase 身份验证撤销 token 在 SwiftUI 应用程序中不起作用

iOS导航返回事件