gpt4 book ai didi

ios - 如何返回此函数的结果?

转载 作者:行者123 更新时间:2023-11-29 02:25:03 27 4
gpt4 key购买 nike

如何从此 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的反馈进行了更新

最佳答案

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)
}

关于ios - 如何返回此函数的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com