【问题标题】:How do I initialize a HKObserverQuery with updateHandler?如何使用 updateHandler 初始化 HKObserverQuery?
【发布时间】:2016-06-18 00:02:48
【问题描述】:

我正在努力学习Apple HealthKit,我目前的目标是让我的应用程序在后台观察特定样本类型的 HK 查询。我可以使用样本类型和谓词初始化观察者查询:

let query = HKObserverQuery(sampleType: sampleType, predicate: nil) {...}

但是当我尝试在初始化中使用自定义 updateHandler 时,XCode 会引发一个问题:

func setUpBackgroundDelivery() {

    guard let sampleType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBloodGlucose) as HKSampleType! else {
        ...
    }

    self.healthKitStore.enableBackgroundDeliveryForType(sampleType, frequency: .Immediate) { (success, error) in
        ...
    }

    let updateHandler: (HKObserverQuery, HKObserverQueryCompletionHandler, NSError?) -> Void = {
        query, completionHandler, error in
        ...
        NSLog("HealthKit Background Delivery received")
        completionHandler()
    }

    let query = HKObserverQuery(sampleType: sampleType, predicate: nil, updateHandler: updateHandler) {
        query, completionHandler, error in
        ...
        completionHandler()   
    }
    healthKitStore.executeQuery(query)
}

问题:

...'(sampleType: HKSampleType, predicate: _, updateHandler: (HKObserverQuery, HKObserverQueryCompletionHandler, NSError?) -> Void, (_, _, _) -> ())' (aka '(sampleType: HKSampleType, predicate: _, updateHandler: (HKObserverQuery, () -> (), 可选) -> (), (_, _, _) -> ())') 不能转换为 '(sampleType: HKSampleType, 谓词:NSPredicate?, updateHandler: (HKObserverQuery, HKObserverQueryCompletionHandler,NSError?)-> Void)'(又名 '(sampleType:HKSampleType,谓词:可选, updateHandler: (HKObserverQuery, () -> (), 可选) -> ())'),元组有不同数量的元素

【问题讨论】:

  • 很久以前我回答了一个与背景通知和HKObserverQuery相关的问题,我认为您可以从中受益匪浅,从另一个答案中提供的更新时间的详细说明和更多stackoverflow.com/questions/26375767/…
  • 我想我误解了语法。似乎如果我包含 updateHandler 参数,我将不得不删除以下闭包。感谢您的评论,它帮助我意识到这一点。

标签: ios swift healthkit


【解决方案1】:

您不应同时指定updateHandler 和尾随闭包。其中只有一个可以作为初始化程序的更新处理程序块参数的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 2020-08-02
    • 2017-11-06
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多