我在嘗試弄清楚如何閱讀HealthKit中的血壓數據時遇到了問題,尤其是在瞭解HKCorrelationQuery如何針對Objective C的血壓工作原理沒有很好地記錄在開發者網站或教程中。如何閱讀iOS中HealthKit的血壓數據?
3
A
回答
3
我用下面的代碼通過HealthKit讀取血壓數據。我發現你無法直接讀取收縮壓或舒張壓值。您需要爲血壓數據創建一個HKCorrelationQuery,然後對於每個相關性,您需要進行一些挖掘以最終獲得血壓值。希望這可以幫助!
- (void)readBloodPressure {
HKQuantityType *systolicType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureSystolic];
HKQuantityType *diastolicType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureDiastolic];
HKCorrelationType *bloodPressureType =
[HKCorrelationType correlationTypeForIdentifier:HKCorrelationTypeIdentifierBloodPressure];
HKCorrelationQuery *query =
[[HKCorrelationQuery alloc]
initWithType:bloodPressureType predicate:nil
samplePredicates:nil
completion:^(HKCorrelationQuery *query, NSArray *correlations, NSError *error) {
if (correlations == nil) {
// Provide proper error handling here...
NSLog(@"An error occurred while searching for blood pressure data %@",
error.localizedDescription);
abort();
}
for (HKCorrelation *correlation in correlations) {
HKQuantitySample *systolicSample = [[correlation objectsForType:systolicType] anyObject];
HKQuantity *systolicQuantity = [systolicSample quantity];
HKQuantitySample *diastolicSample = [[correlation objectsForType:diastolicType] anyObject];
HKQuantity *diastolicQuantity = [diastolicSample quantity];
double systolicd = [systolicQuantity doubleValueForUnit:[HKUnit millimeterOfMercuryUnit]];
double diastolicd = [diastolicQuantity doubleValueForUnit:[HKUnit millimeterOfMercuryUnit]];
NSLog(@"Systolic %f",systolicd);
NSLog(@"Diastolic %f",diastolicd);
NSLog(@"Date %@",systolicSample.startDate);
[self saveBloodPressureIntoApp:systolicd withDiastolic:diastolicd withDate:systolicSample.startDate];
}
}];
[self.healthStore executeQuery:query];
}
2
您可以從HealthKit項直接讀血壓收縮壓和舒張壓值:
NSSet *querySet = [NSSet setWithObjects:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureSystolic],
[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureDiastolic], nil];
for (HKQuantityType *quantityType in querySet) {
HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:quantityType predicate:nil limit:HKObjectQueryNoLimit sortDescriptors:nil resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) {
if (results && results.count > 0) {
dispatch_async(dispatch_get_main_queue(), ^{
// Do something with results, which will be an array of HKQuantitySample objects
});
}
然後,你就必須做一些挖掘得到你想要的任何信息,從這些對象,正如奧利弗所說。
相關問題
- 1. 如何閱讀healthKit心率數據?
- 2. 閱讀GZip壓縮流中的數據
- 3. Apple HealthKit血糖水平讀數正在給出轉換錯誤
- 4. 血壓的血壓表現像Withings?如何獲得使用Highcharts?
- 5. 從HealthKit獲取血糖查詢
- 6. 如何在ipad中繪製血壓圖?
- 7. 如何在iOS應用程序中顯示HealthKit數據?
- 8. 如何閱讀Express中的jsonp數據
- 9. 如何閱讀JSON數據
- 10. 如何閱讀壓縮的JavaScript?
- 11. 如何在healthkit中讀取HKWorkoutActivityType.Running?
- 12. 閱讀與升壓
- 13. 如何寫血壓谷歌適合
- 14. 如何從HealthKit獲取元數據?
- 15. 閱讀HTML數據中的數據
- 16. iOS:閱讀XLS
- 17. EXC_BAD_ACCESS在HealthKit中讀取dateOfBirthWithError
- 18. 如何告訴屏幕閱讀器應閱讀數據內容?
- 19. 閱讀PNG評論(未壓縮的zTXt數據)
- 20. 用iphone測量血壓
- 21. Android血壓圖實現?
- 22. 如何閱讀圖像數據?
- 23. 如何閱讀在線JSON數據庫?
- 24. 我如何閱讀這些json數據?
- 25. 如何閱讀IMediaSample 24位PCM數據
- 26. 如何閱讀firebase數據庫
- 27. 如何閱讀Azure診斷數據
- 28. 如何閱讀從彈出DOM數據
- 29. 如何閱讀PassportJS會話數據?
- 30. android:如何閱讀json數據