【问题标题】:Cannot convert value of type error in Swift无法在 Swift 中转换类型错误的值
【发布时间】:2017-05-21 16:42:57
【问题描述】:

我对 Swift 很陌生,所以我正在关注如何从这个页面制作计步器应用程序的教程:http://shrikar.com/ios-swift-development-step-counter-app-using-pedometer-data/

不过,那是不久前的事了,所以我一直在努力更新它,但并没有走得太远。我不断收到此错误:

Cannot convert value of type '(CMPedometerData?, NSError?) -> Void' to expected argument type 'CMPedometerHandler' (aka '(Optional<CMPedometerData>, Optional<Error>) -> ()')

到目前为止,这是我的代码:

if(CMPedometer.isStepCountingAvailable()){
        let fromDate = NSDate(timeIntervalSinceNow: -86400 * 7)
        self.pedoMeter.queryPedometerDataFromDate(fromDate as Date, toDate: NSDate() as Date) { (data : CMPedometerData?, error: NSError?) -> Void in
            DispatchQueue.main.async(){
                if(error == nil){
                    self.steps.text = "\(data.numberOfSteps)"
                }
            }
        }

        self.pedoMeter.startPedometerUpdatesFromDate(newDay) { (data: CMPedometerData?, error: NSError?) -> Void in
            DispatchQueue.main.async(){
                if(error == nil){
                    self.steps.text = "\(data.numberOfSteps)"
                }
            }
        }
    }

错误出现在下面一行:

{ (data : CMPedometerData?, error: NSError?) -> Void in
            DispatchQueue.main.async(){

任何帮助表示赞赏。

【问题讨论】:

  • 本教程很旧,您可能在项目中使用 Swift 3。NSError 已更改为错误。由于 Swift 的变化,您可能还会遇到其他问题,因为除此之外发布了本教程。
  • 是的,就是这样,感谢您的回复。

标签: ios swift dispatch-async pedometer


【解决方案1】:

它需要Error?,而您使用的是NSError?。试试

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

【讨论】:

  • 哇,就这么简单。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多