Я работаю над приложением, которое считывает различные данные о здоровье от приложения HealthKit
.Как получить метаданные от HealthKit?
До сих пор мне удалось получить DOB, самые последние записи высоты, веса и уровня глюкозы в крови.
Мне нужно, чтобы получить метаданные для этих объектов, в частности мне нужно получить дату/время, когда запись была введена.
Например, чтобы получить запись высоты, я использую этот метод:
func updateHeight()
{
// 1. Construct an HKSampleType for Height
let sampleType = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight)
// 2. Call the method to read the most recent Height sample
self.healthManager?.readMostRecentSample(sampleType, completion: { (mostRecentHeight, error) -> Void in
if(error != nil)
{
println("Error reading height from HealthKit Store: \(error.localizedDescription)")
return;
}
var heightLocalizedString = self.kUnknownString;
self.height = mostRecentHeight as? HKQuantitySample;
// 3. Format the height to display it on the screen
if let meters = self.height?.quantity.doubleValueForUnit(HKUnit.meterUnit()) {
let heightFormatter = NSLengthFormatter()
heightFormatter.forPersonHeightUse = true;
heightLocalizedString = heightFormatter.stringFromMeters(meters);
}
// 4. Update UI. HealthKit use an internal queue. We make sure that we interact with the UI in the main thread
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.heightLabel.text = heightLocalizedString
});
})
}
Как вы заметили, я создаю HKSampleType
постоянны, то передать его в метод, называемый readMostRecentSample
, который принимает это и затем возвращает самую последнюю запись для этого типа образца.
Я попытался напечатать линию возвращаемый объект, и я получил этот результат:
1,9 м «Здоровье» метаданные: {HKWasUserEntered = 1; } 2015-05-17 10:11:00 +0300 2015-05-17 10:11:00 +0300
Как вы видите, выход включает в себя метаданные объекта, но на самом деле я не смог извлечь только дата.
Кроме того, я обнаружил, что есть свойство объекта под названием metadata
, я напечатал его, но это только извлечет мне булевой ли данные, введенные пользователем (вручную) или автоматически от третьего лица: println(self.height?.metadata)
выход был: [HKWasUserEntered = 1]
Буду признателен и благодарен, если кто-то может дать мне представление о том, как извлечь метаданные каждого объекта.
Это работало отлично !. Большое спасибо –