У меня есть обычай WorkoutSessionManager.swift
, который не является подклассом WKInterfaceController
. Он имеет свой собственный контекст и протокол. Он содержит запрос и выборочные обновления. Все данные о частоте сердечных сокращений, расстоянии и энергии (HKUnits) печатаются на консоли. Этот простой блок выводит данные на консоль.Возможно ли запрашивать данные Live HKUnit непосредственно из другого класса без передачи данных?
guard let sample = activeEnergyBurnedSamples.first else{return}
let value = sample.quantity.doubleValueForUnit(self.energyUnit)
print(value)
У меня есть отдельный Dashboard.swift
с моим ми, Cal, ВРМ этикеток.
Поскольку данные в реальном времени можно напрямую запросить данные HK, не передавая это value
недвижимости?
Если это невозможно, как я должен выполнить отправку value
на мои ярлыки во внешнем классе?
WorkoutSessionManager.swift
func createActiveEnergyStreamingQuery(workoutStartDate: NSDate) -> HKQuery? {
guard let quantityType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned) else {return nil}
let activeEnergyQuery = HKAnchoredObjectQuery(type: quantityType, predicate: nil, anchor: anchor, limit: Int(HKObjectQueryNoLimit)) { (query, samples, deletedObjects, newAnchor, error) -> Void in
guard let newAnchor = newAnchor else {return}
self.anchor = newAnchor
self.addActiveEnergySamples(samples)
}
activeEnergyQuery.updateHandler = {(query, samples, deletedObjects, newAnchor, error) -> Void in
self.anchor = newAnchor!
self.addActiveEnergySamples(samples)
}
return activeEnergyQuery
}
func addActiveEnergySamples(samples: [HKSample]?) {
print("updating calorie samples")
guard let activeEnergyBurnedSamples = samples as? [HKQuantitySample] else { return }
dispatch_async(dispatch_get_main_queue()) {
self.currentActiveEnergyQuantity = self.currentActiveEnergyQuantity.addQuantitiesFromSamples(activeEnergyBurnedSamples, unit: self.energyUnit)
self.activeEnergySamples += activeEnergyBurnedSamples
self.delegate?.workoutSessionManager(self, didUpdateActiveEnergyQuantity: self.currentActiveEnergyQuantity)
// Checks
guard let sample = activeEnergyBurnedSamples.first else{return}
let value = sample.quantity.doubleValueForUnit(self.energyUnit)
print(value)
}
}
DashboardController.swift
@IBOutlet weak var milesLabel: WKInterfaceLabel!
@IBOutlet weak var caloriesLabel: WKInterfaceLabel!
@IBOutlet weak var bmpLabel: WKInterfaceLabel!