从HKHealthStore获取最新的BMI值

时间:2014-10-13 20:12:04

标签: ios health-kit hkhealthstore hksamplequery

我想从我的HKHealthStore实例中获取用户最近的BMI读数。截至目前我正在按照以下方式进行,但它看起来并不正确。有没有办法获得BMI的实际数值而不是countUnit(HKUnit)?

HKQuantityType *bodyMassIndexType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMassIndex];

    HKSampleQuery *bmiSampleQuery = [[HKSampleQuery alloc] initWithSampleType:bodyMassIndexType predicate:nil limit:1 sortDescriptors:nil resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) {

        if (results.count == 0)
        {
            //No results
        }
        else
        {
            if (!error)
            {
                NSString *bmiString = [NSString stringWithFormat:@"%@", [[results firstObject] quantity]];
                NSString *parsedBMIString = [bmiString stringByReplacingOccurrencesOfString:@" count" withString:@""];
                NSLog(@"%f", [parsedBMIString floatValue]);
            }
        }
    }];

    [self.store executeQuery:bmiSampleQuery];

1 个答案:

答案 0 :(得分:2)

示例返回一个数组,因此您只需从数组中取出第一个对象,然后将其值转换为double即可进行处理。

HKQuantitySample *sample = [results firstObject];
int i = [sample.quantity doubleValueForUnit:[HKUnit countUnit]];
NSLog(@"%i",i);