如何从此HealthKit查询返回步骤? 我收到错误:在调用中缺少参数#1的参数。代码:
import UIKit
import HealthKit
class ViewController: UIViewController {
var steps = Double()
var date = NSDate()
var query = performHKQuery() -->error: Missing argument for parameter #1 in call
override func viewDidLoad() {
super.viewDidLoad()
performHKQuery()
printsteps()
}
func performHKQuery () -> (steps: Double, date: NSDate){
let healthKitManager = HealthKitManager.sharedInstance
let stepsSample = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)
let stepsUnit = HKUnit.countUnit()
let sampleQuery = HKSampleQuery(
sampleType: stepsSample,
predicate: nil,
limit: 0,
sortDescriptors: nil)
{
(sampleQuery, samples, error) in
for sample in samples as [HKQuantitySample]
{
self.steps = sample.quantity.doubleValueForUnit(stepsUnit)
self.date = sample.startDate
}
}
healthKitManager.healthStore.executeQuery(sampleQuery)
return (steps, date)
}
func printsteps() {
println(query.steps) -->error: ViewController does not have a member named query
}
任何帮助将不胜感激!如果您也可以解释为什么您的解决方案有效,那就太棒了!感谢
代码已在@jrturton
的反馈后更新答案 0 :(得分:1)
HKQuery
是类的名称,您将其用作变量名称。这使编译器感到困惑。
将名称更改为query
或其他内容。
你也有一些结构性问题:
class ViewController: UIViewController {
var steps = Double()
var date = NSDate()
var HKQuery = performHKQuery() -->error: Missing argument for parameter #1 in call
在这里,你要宣布一项财产并立即对其进行初始化。您不能将此作为初始化程序使用,因为拥有该方法的self
在初始化时不存在。
将声明更改为:
var query : (steps: Double,date: NSDate)?
这将它设置为可选的元组类型。在viewDidLoad中,您可以这样做:
query = performHKQuery()
设置值。
然后,在printSteps
中,执行以下操作:
func printsteps() {
println(query?.steps)
}