我正在尝试学习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?) - > Void, (_,_,_) - > ())' (又名'(sampleType:HKSampleType,谓词:_, updateHandler:(HKObserverQuery,() - >(),可选) - > (), (_,_,_) - > ())')不能转换为'(sampleType:HKSampleType, 谓词:NSPredicate?,updateHandler:(HKObserverQuery, HKObserverQueryCompletionHandler,NSError?) - >空隙)' (又名 '(sampleType:HKSampleType,谓词:可选, updateHandler:(HKObserverQuery,() - >(),可选) - > ())'),元组具有不同数量的元素
答案 0 :(得分:1)
您不应同时指定updateHandler
和尾随闭包。只有其中一个可以作为初始化程序的更新处理程序块参数的参数。