Мне удалось вызвать HealthKit для получения самых последних данных о весе.Однако, когда я запускаю его, он включает в себя целую загрузку текста следующим образом:
64 kg E457AF14-36D7-4547-AFAA-EF23DDD6642D "Health" (12.0), "iPhone10,4" (12.0)metadata: {
HKWasUserEntered = 1;
} (2018-10-12 13:12:00 +0100 - 2018-10-12 13:12:00 +0100)
Вот мой код:
func getTodaysWeight(completion: @escaping (HKQuantitySample) -> Void) {
guard let weightSampleType = HKSampleType.quantityType(forIdentifier: .bodyMass) else {
print("Body Mass Sample Type is no longer available in HealthKit")
return
}
//1. Use HKQuery to load the most recent samples.
let mostRecentPredicate = HKQuery.predicateForSamples(withStart: Date.distantPast,
end: Date(),
options: [])
let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate,
ascending: false)
let limit = 1
let sampleQuery = HKSampleQuery(sampleType: weightSampleType,
predicate: mostRecentPredicate,
limit: limit,
sortDescriptors: [sortDescriptor]) { (query, samples, error) in
//2. Always dispatch to the main thread when complete.
DispatchQueue.main.async {
guard let samples = samples,
let mostRecentSample = samples.first as? HKQuantitySample else {
print("getUserBodyMass sample is missing")
return
}
completion(mostRecentSample)
}
}
HealthStore.execute(sampleQuery)
}
////////////////////////////////////
private func updateWeightCountLabel() {
getTodaysWeight { (result) in
print("\(result)")
DispatchQueue.main.async {
self.totalWeight.text = "\(result)"
self.totalWeight.text = String(format:"%.2f")
print("\(result)")
}
}
}
Я попытался сначала обрезать конец.Очевидно, что весь этот текст все еще там, но он грязный и не совсем приемлемый.
Затем я попытался добавить следующий код под закрытой функцией, как я использовал в другом ViewController, чтобы установить два десятичных знака.Однако использование приведенного ниже кода приводит к тому, что в строке UIlabel ничего не отображается.
self.totalWeight.text = String(format:"%.2f")
print("\(result)")
Это моя первая попытка любого вида программирования, поэтому я лично использую это первое приложение в качестве непрерывного процесса обучения., медленно добавляя, изменяя, ломая, как я иду вперед.