我有權訪問HealthStore,併成功將數據打印到控制檯。不過,我需要訪問函數之外的數據,我創建了一個單例,它工作正常。唯一的麻煩是,示例查詢(performQueryForHrSamples())中的數據不會持久存在於函數之外,這意味着當我在函數外調用變量beatsPerMin時,我會得到nil。該變量作爲var beatsPerMin啓動:Double!如何從HealthKit查詢可訪問的外部函數中創建變量?
我曾經試圖「UNNEST」功能找到一種方法來創建一個 - >回,但都沒有成功。
是否有人可以幫助我找到一種方法,使perfromQueryForHRSamples的這個變量以外訪問()?也許我可以將數據保存到CoreData中,如下所示:(Can I save value in a completion Handler)?
import UIKit
class ViewController: UIViewController {
var beatsPerMin:Double!
override func viewDidLoad() {
super.viewDidLoad()
somefunc1()
perfromQueryForHRSamples()
somefunc3()
}
func somefunc1() {
....... {
(success, error) in
if success {
println("success")
} else {
println("cancelled \(error)")
}
}
}
**func perfromQueryForHRSamples**() {
let heartRateSample = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)
let sampleQuery = HKSampleQuery(
sampleType: heartRateSample,
predicate: nil,
limit: 0,
sortDescriptors: nil) {
(sampleQuery, samples, error) in
for sample in samples as [HKQuantitySample]
{
**self.beatsPerMin** = sample.quantity.doubleValueForUnit(self.heartRateUnit)
println("Query output: \(self.beatsPerMin)")
}
}
self.healthStore.executeQuery(sampleQuery)
}
func somefunc3() {
println("\(beatsPerMin)")
}
}
謝謝你,你的回答澄清了我學到的東西!非常簡潔和有用的迴應 – KML 2014-12-05 18:06:11