Я написал базовое приложение для iPhone, которое успешно считывает Weight из HealthKit, но мое соответствующее приложение WatchOS возвращает только пустые результаты. Я использую тот же код HealthKit на обеих платформах. Я знаю, что авторизация работает над Watch, потому что запрос авторизации возвращает isEnabled = success.Невозможно прочитать образцы HealthKit на WatchOS 2, но он работает на iOS
Поведение одинаково на тренажерах и аппаратных устройствах, а Телефон возвращает правильный вес, но часы возвращают набор результатов с 0 образцами (results?.count=0
). Возможность HealthKit включена как для часов, так и для телефонных целей в одном проекте. Я использую WatchOS 2 и Xcode 7.0.1.
Не могли бы вы помочь мне понять, почему часы не возвращают никаких результатов?
ViewController код для iPhone
@IBAction func btnReadWeight(sender: AnyObject) {
HealthKit().recentWeight() { weight, error in
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.txtWeight.text=String(format:"%.1f",weight)
})
}
}
InterfaceController кода на Дозоре
@IBAction func btnReadWeight() {
HealthKit().recentWeight() { weight, error in
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.myLabel.setText(String(format:"%.1f",weight))
})
}
}
Healthkit код (идентичен на iPhone и смотреть)
func recentWeight(completion: (Double, NSError?) ->())
{
let type = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)
let today = NSDate()
let querystart = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: -365, // since a year ago
toDate: today,
options: NSCalendarOptions(rawValue:0))
let predicate = HKQuery.predicateForSamplesWithStartDate(querystart , endDate: NSDate(), options: .None)
let query = HKSampleQuery(sampleType: type!, predicate: predicate, limit: 0, sortDescriptors: nil) { query, results, error in
var recentweight: Double = 0
print(results?.count)
if results?.count > 0
{
for result in results as! [HKQuantitySample]
{
recentweight = result.quantity.doubleValueForUnit(HKUnit.gramUnit())/1000.0
}
}
completion(recentweight, error)
}
healthKitStore.executeQuery(query)
}
Гений, спасибо. Я не рассматривал поток образцов HealthKit между устройствами. – solipsia