0

I am retrieving heart rate from Health Kit in my app. however i get the latest data from Health Kit, how can i get the data monthly wise? I mean last reading from each month.. i saw NSPredicate can be used to do so but i am not getting exactly how to do it..!! I am new to it, please help.!!

here is my code to access heart rate:

NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierEndDate ascending:NO];

HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:quantityType predicate:predicate limit:HKObjectQueryNoLimit sortDescriptors:@[timeSortDescriptor] resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) {
        if (!results) {
            if (completion)
            {
                completion(nil, error);
            }

        return;
    }

    if (completion) {
        // If quantity isn't in the database, return nil in the completion block.
        HKQuantitySample *quantitySample = results.firstObject;
        HKQuantity *quantity = quantitySample.quantity;

        completion(quantity, error);
    }
}];

[self executeQuery:query];

Code for predicate:

NSDate *startDate = [NSDate dateWithYear:[NSNumber numberWithInt:2015] month:[NSNumber numberWithInt:1] day:[NSNumber numberWithInt:1] hour:[NSNumber numberWithInt:00] minute:[NSNumber numberWithInt:00] seconds:[NSNumber numberWithInt:00]];

NSDate *endDate = [NSDate dateWithYear:[NSNumber numberWithInt:2015] month:[NSNumber numberWithInt:30] day:[NSNumber numberWithInt:1] hour:[NSNumber numberWithInt:00] minute:[NSNumber numberWithInt:00] seconds:[NSNumber numberWithInt:59]];

NSPredicate *explicitTimeInterval =
    [NSPredicate predicateWithFormat:@"%K >= %@ AND %K < %@",
         HKPredicateKeyPathEndDate, startDate,
         HKPredicateKeyPathStartDate, endDate];
        self.healthStore = [[HKHealthStore alloc]init];

Thanks in advance :)

Sam Spencer
  • 8,492
  • 12
  • 76
  • 133
ash_win
  • 195
  • 2
  • 10
  • What's `predicate` in your parameters? `results` is a `NSArray` and you get only the `firstObject`. – Larme Feb 02 '15 at 10:55
  • edited question for predicate code. let me know if more is to be updated.. I need only one value from each month.. the last updated value of that month. – ash_win Feb 02 '15 at 13:32
  • @Larme thanks bro i got it.. it was my mistake i was setting start and end date same and my Hear Data was not in that range :P thanks anyway..:) – ash_win Feb 02 '15 at 13:55

0 Answers0