Получение самого последнего значения ИМТ из HKHealthStore

Я хочу получить самые последние показания ИМТ пользователей из моего экземпляра HKHealthStore. На данный момент я делаю это следующим образом, но это не кажется правильным. Есть ли способ получить фактическое числовое значение для ИМТ вместо 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];

person Patrick    schedule 13.10.2014    source источник


Ответы (1)


Образец возвращает массив, поэтому вы можете просто вытащить первый объект из массива, а затем преобразовать его значение в двойное для обработки.

HKQuantitySample *sample = [results firstObject];
int i = [sample.quantity doubleValueForUnit:[HKUnit countUnit]];
NSLog(@"%i",i);
person Lvia    schedule 22.12.2014
comment
Добро пожаловать в Stack Overflow! Этот ответ, вероятно, будет улучшен, если объяснить цель кода. - person Nathan Tuggy; 22.12.2014