Commit fbeb3980 authored by 冷佳娟's avatar 冷佳娟 💪

HRB-3175 修改體重取得資料為 Double 值

parent 815a58f7
......@@ -60,7 +60,7 @@
}
NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate];
[self fetchQuantitySamplesOfType:weightType
[self fetchQuantityDoubleSamplesOfType:weightType
unit:unit
predicate:predicate
ascending:ascending
......
......@@ -24,6 +24,12 @@
ascending:(BOOL)asc
limit:(NSUInteger)lim
completion:(void (^)(NSArray *, NSError *))completion;
- (void)fetchQuantityDoubleSamplesOfType:(HKQuantityType *)quantityType
unit:(HKUnit *)unit
predicate:(NSPredicate *)predicate
ascending:(BOOL)asc
limit:(NSUInteger)lim
completion:(void (^)(NSArray *, NSError *))completion;
- (void)fetchCorrelationSamplesOfType:(HKQuantityType *)quantityType
unit:(HKUnit *)unit
predicate:(NSPredicate *)predicate
......
......@@ -129,6 +129,84 @@
}
- (void)fetchQuantityDoubleSamplesOfType:(HKQuantityType *)quantityType
unit:(HKUnit *)unit
predicate:(NSPredicate *)predicate
ascending:(BOOL)asc
limit:(NSUInteger)lim
completion:(void (^)(NSArray *, NSError *))completion {
NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierEndDate
ascending:asc];
// 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 (HKQuantitySample *sample in results) {
HKQuantity *quantity = sample.quantity;
double value = [quantity doubleValueForUnit:unit];
int startDateTimestamp = [RCTAppleHealthKit buildTimestampFromDate:sample.startDate];
int endDateTimestamp = [RCTAppleHealthKit buildTimestampFromDate:sample.endDate];
NSString *deviceName = sample.device.name ? sample.device.name : @"";
NSString *deviceManufacturer = sample.device.manufacturer ? sample.device.manufacturer : @"";
NSString *deviceHardwareVer = sample.device.hardwareVersion ? sample.device.hardwareVersion : @"";
NSString *deviceSoftwareVer = sample.device.softwareVersion ? sample.device.softwareVersion : @"";
NSString *sourceName = sample.sourceRevision.source.name;
NSString *sourceId = sample.sourceRevision.source.bundleIdentifier;
NSString *uuid = sample.UUID.UUIDString;
NSString *metadata = [sample.metadata == nil ? @"" : sample.metadata.description stringByReplacingOccurrencesOfString:@" " withString:@""];
metadata = [metadata stringByReplacingOccurrencesOfString:@"\r" withString:@""];
metadata = [metadata stringByReplacingOccurrencesOfString:@"\n" withString:@""];
NSDictionary *elem = @{
@"value" : @(value),
@"startDate" : @(startDateTimestamp),
@"endDate" : @(endDateTimestamp),
@"deviceName" : deviceName,
@"deviceManufacturer" : deviceManufacturer,
@"deviceHardware" : deviceHardwareVer,
@"deviceSoftware" : deviceSoftwareVer,
@"sourceName" : sourceName,
@"sourceId" : sourceId,
@"unit" : unit.description,
@"uuid" : uuid,
@"metadata" : metadata
};
[data addObject:elem];
}
completion(data, error);
});
}
};
HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:quantityType
predicate:predicate
limit:lim
sortDescriptors:@[timeSortDescriptor]
resultsHandler:handlerBlock];
[self.healthStore executeQuery:query];
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment