2015-07-20 69 views
-1

所以我有这个功能,它获取与从过去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) 
} 

然而,当我试图在我的AppDelegate文件中使用“HKManager.stepsInPastDay.dayStepData”(HKManager是类)访问数组(dayStepData),Xcode返回一个错误。有没有办法从我的函数获取数组?

+0

曾听说过“变量范围”,该数组仅在函数中可用。创建实例变量或使用返回语句访问函数外的数据。 – luk2302

回答

1

这是OOP(面向对象编程)101的东西。您正在将您的值保存到本地变量。当然,它在您的应用程序委托中不可见。

把函数放在某种单例类中,使函数返回数组作为函数结果。

如果您将应用程序逻辑放入您的应用程序委托中,那么您做错了。保持您的应用程序委托小而轻。它应该只处理启动和其他应用程序委托任务。将您的应用程序特定的逻辑放入其他模块中。