我正在尝试学习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/