【问题标题】:Cannot convert value of type error Swift无法转换类型错误 Swift 的值
【发布时间】:2016-08-02 23:14:24
【问题描述】:

我正在关注 tutorial 制作一个简单的计步器应用程序,但出现以下错误

无法将 '(CMPedometerData!, _) -> Void' 类型的值转换为 预期的参数类型“CMPedometerHandler”(又名 '(可选,可选) -> ()')

在这些代码行上:

if(CMPedometer.isStepCountingAvailable()){
                   let fromDate = NSDate(timeIntervalSinceNow: -86400 * 7)
                   self.pedoMeter.queryPedometerDataFromDate(fromDate, toDate: NSDate()) { (data : CMPedometerData!, error) -> Void in
                       print(data)
                       dispatch_async(dispatch_get_main_queue(), { () -> Void in
                           if(error == nil){
                               self.steps.text = "\(data.numberOfSteps)"
                           }
                       })
                   }
                   self.pedoMeter.startPedometerUpdatesFromDate(midnightOfToday) { (data: CMPedometerData!, error) -> Void in
                       dispatch_async(dispatch_get_main_queue(), { () -> Void in
                           if(error == nil){
                               self.steps.text = "\(data.numberOfSteps)"
                           }
                       })
                   }
               }

【问题讨论】:

    标签: swift


    【解决方案1】:

    编译器告诉您您提供的处理程序类型错误——您将第一个参数作为隐式解包的可选项而不是可选项(它具有! 而不是?),第二个参数根本没有类型。换句话说,看起来像这样的位:

    (data : CMPedometerData!, error) -> Void
    

    …应该看起来像这样:

    (data : CMPedometerData?, error: NSError?) -> Void
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多