Hey,
Ich stelle mich mal kurz vor. Mein Name ist Martin, ich studiere im zweiten semester Informatik.
Ich bin relativ neu in der iOS App Entwicklung. Ich habe schon einige Projekte für Android Projekte umgesetzt und habe auch ein wenig Programmier Erfahrung.
Ich bin vor ein paar Monaten auf ein iPhone + Apple Watch umgestiegen und will mir jetzt gerne eine kleine App schreiben, die meine Energieverbrauch über den Tag tracked.
Hierfür will ich verschiede Daten vom HealthStore abfragen. Angefangen mit .activeEnergyBurned
Das versuche ich mit folgender Funktion zu bewerkstelligen:
Alles anzeigen
Die Samples werden dann von der Funktion process verarbeitet:
Alles anzeigen
Ich habe den Code größtenteils nicht selber geschrieben, ich versuche noch zu lernen und zu verstehen.
Gerade habe ich das problem, dass die Samples von der query Func leer sind. Die Ausgabe
gibt null aus.
Könntet ihr mir sagen, wo mein Fehler liegt?
Mit freundlichen Grüßen und danke im Voraus,
Martin.
Ich stelle mich mal kurz vor. Mein Name ist Martin, ich studiere im zweiten semester Informatik.
Ich bin relativ neu in der iOS App Entwicklung. Ich habe schon einige Projekte für Android Projekte umgesetzt und habe auch ein wenig Programmier Erfahrung.
Ich bin vor ein paar Monaten auf ein iPhone + Apple Watch umgestiegen und will mir jetzt gerne eine kleine App schreiben, die meine Energieverbrauch über den Tag tracked.
Hierfür will ich verschiede Daten vom HealthStore abfragen. Angefangen mit .activeEnergyBurned
Das versuche ich mit folgender Funktion zu bewerkstelligen:
Quellcode
- private func startHKQuery(quantityTypeIdentifier: HKQuantityTypeIdentifier) {
- //doesn't return any data as sample
- //DEBUG
- // 1
- let devicePredicate = HKQuery.predicateForObjects(from: [HKDevice.local()])
- // 2
- let updateHandler: (HKAnchoredObjectQuery, [HKSample]?, [HKDeletedObject]?, HKQueryAnchor?, Error?) -> Void = {
- query, samples, deletedObjects, queryAnchor, error in
- // 3
- guard let samples = samples as? [HKQuantitySample] else {
- return
- }
- self.process(samples, type: quantityTypeIdentifier)
- }
- // 4
- let query = HKAnchoredObjectQuery(type: HKObjectType.quantityType(forIdentifier: quantityTypeIdentifier)!, predicate: devicePredicate, anchor: nil, limit: HKObjectQueryNoLimit, resultsHandler: updateHandler)
- query.updateHandler = updateHandler
- // 5
- healthStore.execute(query)
- print("query sended")
- }
Die Samples werden dann von der Funktion process verarbeitet:
Quellcode
- private func process(_ samples: [HKQuantitySample], type: HKQuantityTypeIdentifier) {
- print("process func run")
- var lastActiveEnergy = 0.0
- print(String(samples.count))
- for sample in samples {
- print(sample)
- if type == .heartRate {
- lastActiveEnergy = sample.quantity.doubleValue(for: heartRateQuantity)
- }
- print("Value written")
- self.value = 10 //Int(lastActiveEnergy)
- }
- }
Gerade habe ich das problem, dass die Samples von der query Func leer sind. Die Ausgabe
gibt null aus.
Könntet ihr mir sagen, wo mein Fehler liegt?
Mit freundlichen Grüßen und danke im Voraus,
Martin.