不同类Swift中的引用数组

时间:2015-07-20 17:41:57

标签: ios arrays swift

所以我有这个函数,它获取并打印过去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会返回错误。有没有办法从我的函数中获取数组?

1 个答案:

答案 0 :(得分:1)

这是OOP(面向对象编程)101的东西。您将值保存到局部变量。当然,它在你的app代理中是不可见的。

将函数放入某种类型的单例类中,使函数返回数组作为函数结果。

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