我正在尝试学习Apple HealthKit,我的当前目标是让我的应用程序在后台查看某些样本类型的HK查询。我可以使用sampletype和predicate初始化一个observerquery:

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,谓词:_,updateHandler:(HKObserverQuery,HKObserverQueryCompletionHandler,NSError?)->无效,
  (_,_,_)->())'(又称'((sampleType:HKSampleType,谓词:_,
  updateHandler:(HKObserverQuery,()->(),可选)->(),
  (_,_,_)->())')不可转换为'(sampleType:HKSampleType,
  谓词:NSPredicate ?, updateHandler:(HKObserverQuery,
  HKObserverQueryCompletionHandler,NSError?)->无效)'(aka
  '(sampletype:HKSampleType,谓词:可选,
  updateHandler:(HKObserverQuery,()->(),可选)->
  ())'),元组具有不同数量的元素

最佳答案

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

关于ios - 如何使用updateHandler初始化HKObserverQuery?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37859534/

10-09 23:11