1
今年1月のHealth Appに保存されている今年の心拍数の記録は2つあります。私が作っている現在のアプリでは、心拍数のデータを読み書きするためのアクセス権を与えています。トラブルHealthKitからの心拍数データの取得
私のビューのコントローラの1つで、私のviewDidAppearに、私は心拍数の記録を読み込もうとしています。しかし、私はすべてのデータの取得に失敗しています。ここで
は私の読み取り心拍数データコードです:
+ (void)readHeartRateWithCompletion:(void (^)(NSArray *results, NSError *error))completion {
HKQuantityType *heartRateType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];
NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierStartDate ascending:YES];
NSDate *lastSample = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastTsUploaded"];
if (!lastSample) {
lastSample = [NSDate dateWithTimeIntervalSinceNow:-24 * 60 * 60];
}
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDate *now = [NSDate date];
NSCalendar *gregorian = [NSCalendar currentCalendar];
NSDateComponents *comps = [gregorian components:unitFlags fromDate:now];
[comps setYear:[comps year] - 2];
NSDate *hundredYearsAgo = [gregorian dateFromComponents:comps];
NSPredicate *pred = [HKQuery predicateForSamplesWithStartDate:hundredYearsAgo endDate:[NSDate date] options:HKQueryOptionStrictStartDate];
HKSampleQuery *sampleQuery = [[HKSampleQuery alloc] initWithSampleType:heartRateType predicate:pred limit:10 sortDescriptors:@[timeSortDescriptor] resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) {
if (!results) {
NSLog(@"There are no heart rate results. The error was: %@.", error);
return;
}
}];
[[dcsContext sharedContext].healthStore executeQuery:sampleQuery];
}
私のクエリはすべてのデータを返さないのはなぜ?