0

嗨,我想简化我的代码,所以我采用以下方式

private func heightChangedHandler(query: HKObserverQuery!, completionHandler: HKObserverQueryCompletionHandler!, error: Error!) {

    // Here you need to call a function to query the height change
    DispatchQueue.main.async {
        let sampleType = self.setSampleType(identifier: HKQuantityTypeIdentifier.height)
        self.getData(sampleType: sampleType, category: "Height")
    }
    completionHandler()
}

//这个函数会调用queryAndObserve函数

func startObservingHeightChanges() {

    self.queryAndObserve(category: "Height", identifier: HKQuantityTypeIdentifier.height, categoryUpdateHandler: self.heightChangedHandler ,frequency: HKUpdateFrequency.immediate)
}

所以在 queryAndObserve 函数中

private func queryAndObserve(category:String,identifier:HKQuantityTypeIdentifier, categoryUpdateHandler: ????,frequency:HKUpdateFrequency){


}

我的问题是我不知道我应该categoryUpdateHandler在observeAndQuery() 中给出什么数据类型。最初我给AnyObject它,它编译好但在运行时崩溃。日志是

无法将“_SwiftValue”(0x1015fc598)类型的值转换为“(__ObjC.HKObserverQuery,()->(),Swift.Optional)->()”(0x1015fc560)。2017-12-15 14:55:09.235334+0530 应用程序名称 [886:238336] 无法将“_SwiftValue”(0x1015fc598)类型的值转换为“(__ObjC.HKObserverQuery,()->(),Swift.Optional) > ()' (0x1015fc560)。

任何想法都会有帮助。谢谢你。

4

0 回答 0