我已将所有必要的健康数据导入到我的应用中,但是当我尝试在导入它们的类之外使用健康变量时,我不断收到 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/