所以我有这个函数,它获取并打印过去24小时内的所有HealthKit步骤数据,并将其保存到数组中:
func stepsInPastDay(completion: (Double, NSError?) -> () )
{
var dayStepData = [Double]()
for x in 1...24 {
// The type of data we are requesting
let type = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)
var hoursAgo = -1 * x
var hoursSince = (-1 * x) + 1
// Our search predicate which will fetch data from now until a day ago
let predicate = HKQuery.predicateForSamplesWithStartDate(NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitHour, value: hoursAgo, toDate: NSDate(), options: nil), endDate: NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitHour, value: hoursSince, toDate: NSDate(), options: nil), options: .None)
// The actual HealthKit Query which will fetch all of the steps and sub them up for us.
let query = HKSampleQuery(sampleType: type, predicate: predicate, limit: 0, sortDescriptors: nil) { query, results, error in
var steps: Double = 0
if results?.count > 0
{
for result in results as! [HKQuantitySample]
{
steps += result.quantity.doubleValueForUnit(HKUnit.countUnit())
}
}
completion(steps, error)
dayStepData.append(steps)
if dayStepData.count > 23 {
for item in dayStepData {
println(item)
}
}
}
self.healthKitStore.executeQuery(query)
println(dayStepData.count)
}
println(dayStepData.count)
}
但是,当我尝试使用“HKManager.stepsInPastDay.dayStepData”(HKManager是类)访问AppDelegate文件中的数组(dayStepData)时,Xcode会返回错误。有没有办法从我的函数中获取数组?
答案 0 :(得分:1)
这是OOP(面向对象编程)101的东西。您将值保存到局部变量。当然,它在你的app代理中是不可见的。
将函数放入某种类型的单例类中,使函数返回数组作为函数结果。
如果您在应用代理中放置应用逻辑,那么您做错了。保持您的应用程序委托小巧轻便。它应该只处理启动和其他应用程序委托任务。将特定于应用程序的逻辑放在其他模块中。