I'm trying to learn Apple HealthKit
, and my current goal is to make my application observe HK queries for certain sample types while it's in the background. I can initialize an observerquery with sampletype and predicate:
let query = HKObserverQuery(sampleType: sampleType, predicate: nil) {...}
But when I try to use a custom updateHandler in initialization, XCode raises an issue:
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)
}
Issue being:
...'(sampleType: HKSampleType, predicate: _, updateHandler: (HKObserverQuery, HKObserverQueryCompletionHandler, NSError?) -> Void, (_, _, _) -> ())' (aka '(sampleType: HKSampleType, predicate: _, updateHandler: (HKObserverQuery, () -> (), Optional) -> (), (_, _, _) -> ())') is not convertible to '(sampleType: HKSampleType, predicate: NSPredicate?, updateHandler: (HKObserverQuery, HKObserverQueryCompletionHandler, NSError?) -> Void)' (aka '(sampleType: HKSampleType, predicate: Optional, updateHandler: (HKObserverQuery, () -> (), Optional) -> ())'), tuples have a different number of elements