Swift Closures Quick Reference: Part 3

Now let’s write our own closure! func fetchMostRecentDataOfQuantityType(quantityType: HKQuantityType, withCompletion completion: ((mostRecentQuantity:HKQuantity?, error:NSError?) -> ())? ) { let timeSortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierEndDate, ascending: false) [timeSortDescriptor], resultsHandler: { (query:HKSampleQuery!, results:[AnyObject]!, error:NSError?) -> Void in let query = HKSampleQuery(sampleType: quantityType, predicate: nil, limit: 1, sortDescriptors: [timeSortDescriptor]) { query, results, error in if completion != nil && error != nil { completion!(mostRecentQuantity: nil, error: error) return; } let resultsArray = results as NSArray? var quantitySample: HKQuantitySample? = resultsArray?.firstObject as HKQuantitySample? var quantity: HKQuantity? = quantitySample?.quantity if completion != nil { completion!(mostRecentQuantity: quantity, error: error) } } self.healthStore?.executeQuery(query) } Notice we declare a function that takes a quantityType parameter and a completion parameter.  The… Read More

Continue Reading