From 76fa1a2d3c8f5b4aa21f9f1d4914398598f1099e Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 6 Nov 2016 14:29:55 -0500 Subject: [PATCH] added sleep category query to queries --- RCTAppleHealthKit/RCTAppleHealthKit+Queries.h | 6 ++ RCTAppleHealthKit/RCTAppleHealthKit+Queries.m | 96 +++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h index a5b9508..a1653a2 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h @@ -38,4 +38,10 @@ limit:(NSUInteger)lim completion:(void (^)(NSArray *, NSError *))completionHandler; + + +- (void)fetchSleepCategorySamplesForPredicate:(NSPredicate *)predicate + limit:(NSUInteger)lim + completion:(void (^)(NSArray *, NSError *))completion; + @end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m index 7b86134..d29ca86 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m @@ -106,6 +106,102 @@ } + + + + + + + +- (void)fetchSleepCategorySamplesForPredicate:(NSPredicate *)predicate + limit:(NSUInteger)lim + completion:(void (^)(NSArray *, NSError *))completion { + + + NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierEndDate + ascending:false]; + + + // declare the block + void (^handlerBlock)(HKSampleQuery *query, NSArray *results, NSError *error); + // create and assign the block + handlerBlock = ^(HKSampleQuery *query, NSArray *results, NSError *error) { + if (!results) { + if (completion) { + completion(nil, error); + } + return; + } + + if (completion) { + NSMutableArray *data = [NSMutableArray arrayWithCapacity:1]; + + dispatch_async(dispatch_get_main_queue(), ^{ + + for (HKCategorySample *sample in results) { + + HKCategoryType *catType = sample.categoryType; + NSInteger *val = sample.value; + + // HKQuantity *quantity = sample.quantity; + // double value = [quantity doubleValueForUnit:unit]; + + NSString *startDateString = [RCTAppleHealthKit buildISO8601StringFromDate:sample.startDate]; + NSString *endDateString = [RCTAppleHealthKit buildISO8601StringFromDate:sample.endDate]; + + NSDictionary *elem = @{ + @"value" : @(( (float) *val )), + @"catType" : catType.identifier, + @"startDate" : startDateString, + @"endDate" : endDateString, + }; + + [data addObject:elem]; + } + + completion(data, error); + }); + } + }; + + // HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:quantityType + // predicate:predicate + // limit:lim + // sortDescriptors:@[timeSortDescriptor] + // resultsHandler:handlerBlock]; + + HKCategoryType *categoryType = + [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis]; + + // HKCategorySample *categorySample = + // [HKCategorySample categorySampleWithType:categoryType + // value:value + // startDate:startDate + // endDate:endDate]; + + + HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:categoryType + predicate:predicate + limit:lim + sortDescriptors:@[timeSortDescriptor] + resultsHandler:handlerBlock]; + + + [self.healthStore executeQuery:query]; +} + + + + + + + + + + + + + - (void)fetchCorrelationSamplesOfType:(HKQuantityType *)quantityType unit:(HKUnit *)unit predicate:(NSPredicate *)predicate -- 2.26.2