Skip to content

Instantly share code, notes, and snippets.

@jault3
Last active August 29, 2015 14:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jault3/78a001b891c34ee8350a to your computer and use it in GitHub Desktop.
Save jault3/78a001b891c34ee8350a to your computer and use it in GitHub Desktop.
Populate Weight from HealthKit
HKQuantityType *weightType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];
// Since we are interested in retrieving the user's latest sample
// we sort the samples in descending order by end date
// and set the limit to 1
// We are not filtering the data, and so the predicate is set to nil.
NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierEndDate ascending:NO];
// construct the query & since we are not filtering the data the predicate is set to nil
HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:weightType predicate:nil limit:1 sortDescriptors:@[timeSortDescriptor] resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) {
// if there is a data point, dispatch to the main queue
if (results) {
dispatch_async(dispatch_get_main_queue(), ^{
HKQuantitySample *quantitySample = results.firstObject;
// pull out the quantity from the sample
HKQuantity *quantity = quantitySample.quantity;
HKUnit *weightUnit = [HKUnit poundUnit];
double usersWeight = [quantity doubleValueForUnit:weightUnit];
_txtWeight.text = [NSString stringWithFormat:@"%@ lbs", [NSNumberFormatter localizedStringFromNumber:@(usersWeight) numberStyle:NSNumberFormatterNoStyle]];
});
}
}];
// do not forget to execute the query after its constructed
[_healthStore executeQuery:query];
@zhaomizhi
Copy link

Hi, I follow almost all code from you post. However, my program did not really "execute" the query. I write some NSLog (before if (results)) and debug to check and found that it never really run the code in query block.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment