如何在其他 类 中使用导入的 HealthKit 示例
How to use imported HealthKit samples in other classes
我已将所有必要的健康数据导入到我的应用程序中,但是当我尝试在我导入它们的 class 之外使用健康变量时,我不断得到 nil
值。
我有一个 class 有一个成功导入数据的方法和一个成功打印数据的方法:
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 样本的方法是异步完成的,但我对这里发生的事情有点困惑。我想我缺少一些与完成处理程序有关的东西,但我不确定从哪里开始。
(如果你想要更完整的代码,我可以包含它,但我想我会通过简化事情来节省一些 space。)
这不是 healthKit 的问题。
在你所有 classes
var healthData:Double?
是一个自动初始化为nil的实例变量。这意味着
var healthData2 = HealthData().healthData
部分
HealthData()
创建一个新实例。所以
HealthData().healthData
始终为零,因为您在此实例中未导入任何内容。
您可能导入了那个 class 的另一个实例。
更多相关信息:Apples Swift 电子书是免费的。
你是 HealthData class 应该是单例对象。推荐的 Swift 单例模式是
class HealthData:NSObject {
static let sharedInstance = HealthData()
...
}
然后访问来自其他 class 的数据,例如
HealthData.sharedInstance().myfunc()
我已将所有必要的健康数据导入到我的应用程序中,但是当我尝试在我导入它们的 class 之外使用健康变量时,我不断得到 nil
值。
我有一个 class 有一个成功导入数据的方法和一个成功打印数据的方法:
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 样本的方法是异步完成的,但我对这里发生的事情有点困惑。我想我缺少一些与完成处理程序有关的东西,但我不确定从哪里开始。
(如果你想要更完整的代码,我可以包含它,但我想我会通过简化事情来节省一些 space。)
这不是 healthKit 的问题。
在你所有 classes
var healthData:Double?
是一个自动初始化为nil的实例变量。这意味着
var healthData2 = HealthData().healthData
部分
HealthData()
创建一个新实例。所以
HealthData().healthData
始终为零,因为您在此实例中未导入任何内容。
您可能导入了那个 class 的另一个实例。
更多相关信息:Apples Swift 电子书是免费的。
你是 HealthData class 应该是单例对象。推荐的 Swift 单例模式是
class HealthData:NSObject {
static let sharedInstance = HealthData()
...
}
然后访问来自其他 class 的数据,例如
HealthData.sharedInstance().myfunc()