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

标签 ios objective-c swift

如何从此 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/

相关文章:

ios - GLKView 后面的 UIImage

ios - Swift iOS9 新联系人框架 - 如何仅检索具有有效电子邮件地址的 CNContact?

iOS 访问 parentViewController 以更改 UIButton setSelected :YES 的状态

ios - 根据 UILabel 文本的数量增加 tableview 单元格的高度

ios - 在 Swift 中应用混合模式

ios - 将字符替换为 url 可接受的格式 [iOS/SWIFT]

ios - SceneKit 相机仅在 x 轴上跟随对象? - swift

ios - 无法创建仅限于 Xcode 9.3/Swift 4.1 中的类的协议(protocol)

ios - CoreAnimation 困惑 : CATransaction vs CATransition vs CAAnimationGroup?

iphone - restkit 安装到 xcode - 总是这么复杂吗?