ios - 如何在其他类中使用导入的HealthKit样本

标签 ios swift healthkit

我已将所有必要的健康数据导入到我的应用中,但是当我尝试在导入它们的类之外使用健康变量时,我不断收到 nil 值。

我有一个类,其中包含成功导入数据的方法和成功打印数据的方法:

class HealthData:NSObject {

    var healthData:Double?

    func importData() {
        readMostRecentSample(sampleType!, completion: { (mostRecentSample, error) -> Void in
            self.printData()
        })
    }
    func printData() {
        print(healthData)
    }
}

但是当我尝试在新类(class)中做这样的事情时:

class HealthAlgorithm:NSObject {

    var healthData2 = HealthData().healthData

    func printData() {
        print(healthData2)
    }
}

我从成功调用原始 printData 方法的同一位置调用该函数:

class HealthData:NSObject {

    var healthData:Double?

    func importData() {
        self.printsData()
        HealthAlgorithm().printsData()
    }
    func printsData() {
        print(healthData)
    }
}

我遇到了与此类似的问题,并且我意识到查询 HealthKit 示例的方法是异步完成的,但我对这里到底发生了什么感到有点困惑。我认为我缺少一些与完成处理程序有关的东西,但我不确定从哪里开始。

(如果您想要更完整的代码,我可以包含它,但我想通过简化事情可以节省一些空间。)

最佳答案

这不是 healthKit 问题。

在所有类(class)中

 var healthData:Double?

是一个实例变量,自动初始化为nil。这意味着在

var healthData2 = HealthData().healthData

部分

HealthData()

创建一个新实例。所以

HealthData().healthData

始终为零,因为在此实例中您没有导入任何内容。

您可能导入到该类的另一个实例中。

更多相关信息:Apple 的 Swift 电子书是免费的。

关于ios - 如何在其他类中使用导入的HealthKit样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33428171/

相关文章:

swift - HKWorkoutRouteBuilder 和 CLLocationManager 仅以增量方式添加路线更新

ios - 在 block 中使用 NSUserDefaults 会导致内存崩溃

ios - 如何修复 IBOutlet 配置上的 nil 错误和调用 View Controller 时不显示 UI?

swift - 使用 RKValueTransFormer 将 NSArray 转换为 RLMArray 无法将 outputValue 转换为 AutoreleasingUnsafeMutablePointer<AnyObject?>

ios - watchOS : How to use HKWorkoutSession without heart rate sensor

ios - iOS Healthkit记录自定义锻炼数据

ios - 等待{模拟器/设备}启动

ios - 我如何快速建立关系?

ios - NSXMLParser 代码的 EXC_BAD_ACCESS

ios - Swift 和 Spawning 对象的评分方法