嗨,我想简化我的代码,所以我采用以下方式
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)。
任何想法都会有帮助。谢谢你。