Я синхронизирую данные Heart Reat, BloodPressure из HealthKit.
Проблема этого подхода заключается в том, что пользователь вводит исторические данные, которые не будут синхронизироваться. Как выполнить тот же запрос, но с CreationDate (вместо StartDate) или с каким-либо идентификатором базы данных, который идентифицирует историческое значение как более новое?
Я просто хочу отфильтровать все вновь созданные значения из аптечки.
-(void)getSpecificHealthKitDataHeartReat:(NSDate*)myDate
{
NSDateFormatter *dtFormat = [[NSDateFormatter alloc] init];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
NSDate *startDate = [calendar dateFromComponents:components];
NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:1 toDate:startDate options:0];
NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionNone];
//[HKQuery predicateForObjectWithUUID:(nonnull NSUUID *)]
//Read HeartRate
HKHealthStore *healthStore = [[HKHealthStore alloc] init];
NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierStartDate ascending:YES];
HKQuantityType *heartRateType2 = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];
HKSampleQuery *sampleQuery2 = [[HKSampleQuery alloc] initWithSampleType:heartRateType2 predicate:predicate limit:0 sortDescriptors:@[timeSortDescriptor] resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error)
{
if (!results)
{
NSLog(@"There are no heart rate results. The error was: %@.", error);
return;
}
else
{
NSMutableArray *hrArray = [[NSMutableArray alloc]init];
for(HKQuantitySample *samples in results)
{
HKQuantity *hrQuantity = [samples quantity];
// double hr = [hrQuantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]];
double hr = [hrQuantity doubleValueForUnit: [[HKUnit countUnit] unitDividedByUnit:[HKUnit minuteUnit]]];
NSLog(@"hr %f",hr);
NSLog(@"startDate %@",samples.startDate);
NSLog(@"endDate %@",samples.endDate);
}
}
}];
// Execute the query
[healthStore executeQuery:sampleQuery2];
}