Xcode 快速错误';表达式类型';香港主播主题查询';没有更多的上下文,它是模糊的

Xcode 快速错误';表达式类型';香港主播主题查询';没有更多的上下文,它是模糊的,xcode,debugging,healthkit,Xcode,Debugging,Healthkit,我在healthkit代码中得到一个错误“表达式类型'HKAnchoredObjectQuery'不明确,没有更多内容”,行“let heartRateQuery=HKAnchoredObjectQuery(类型:quantityType,谓词:nil,锚点:锚点,限制:Int(HKObjectQueryOnlimit)){(查询,sampleObjects,deletedObjects,newAnchor,error)->in无效” 代码是从一个示例项目复制粘贴到我的项目中的,该项目在这一行上

我在healthkit代码中得到一个错误“表达式类型'HKAnchoredObjectQuery'不明确,没有更多内容”,行“let heartRateQuery=HKAnchoredObjectQuery(类型:quantityType,谓词:nil,锚点:锚点,限制:Int(HKObjectQueryOnlimit)){(查询,sampleObjects,deletedObjects,newAnchor,error)->in无效”

代码是从一个示例项目复制粘贴到我的项目中的,该项目在这一行上运行时没有错误,现在它在我的项目中出现了这个错误

守则:

  func createHeartRateStreamingQuery(workoutStartDate: NSDate) -> HKQuery? {
    // adding predicate will not work
    //let predicate = HKQuery.predicateForSamplesWithStartDate(workoutStartDate, endDate: nil, options: HKQueryOptions.None)

    guard let quantityType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate) else { return nil }

    let heartRateQuery = HKAnchoredObjectQuery(type: quantityType, predicate: nil, anchor: anchor, limit: Int(HKObjectQueryNoLimit)) { (query, sampleObjects, deletedObjects, newAnchor, error) -> Void in
        guard let newAnchor = newAnchor else {return}
        self.anchor = newAnchor
        self.updateHeartRate(sampleObjects)

这一条让我抓狂,我遇到了同样的问题。我想如果您将heartRateQuery初始化行更改为这一行,它就会工作:

let heartRateQuery = HKAnchoredObjectQuery(type: quantityType, predicate: nil, anchor: anchor, limit: Int(HKObjectQueryNoLimit), resultsHandler: { (query, sampleObjects, deletedObjects, newAnchor, error) in
        //Do anchor code here
        guard let newAnchor = newAnchor else {return}
        self.anchor = newAnchor
        self.updateHeartRate(sampleObjects)
    })
他们删除了限制后的括号,并为定义结果的闭包使用了命名参数(resultsHandler)。您也不再需要“->Void”代码。顺便说一句,这适用于Swift 3

该错误具有误导性,因为它似乎无法确定类。在我的情况下,因为我的查询是一个初始化为nil的属性,因此是可选的,所以我假设这就是问题所在。真正的问题是,它不明确,因为构造函数不正确,并且因为它不正确,所以无法确定返回的对象应该是什么是

如果它有助于进一步,这是我的一些代码:

self.acQuery = HKAnchoredObjectQuery(type: sampleType,
                                         predicate: pred,
                                         anchor: self.acAnchor,
                                         limit: Int(HKObjectQueryNoLimit),
                                         resultsHandler: { (query, newSamples, deletedSamples, newAnchor, error) in

                                            self.updateHeartRates(newSamples: newSamples, deletedSamples: deletedSamples, newAnchor: newAnchor, error: error);
                                            })

祝你好运!

这一条让我抓狂,我遇到了同样的问题。我想如果你将heartRateQuery初始化行更改为这一行,它会起作用:

let heartRateQuery = HKAnchoredObjectQuery(type: quantityType, predicate: nil, anchor: anchor, limit: Int(HKObjectQueryNoLimit), resultsHandler: { (query, sampleObjects, deletedObjects, newAnchor, error) in
        //Do anchor code here
        guard let newAnchor = newAnchor else {return}
        self.anchor = newAnchor
        self.updateHeartRate(sampleObjects)
    })
他们删除了限制后的括号,并为定义结果的闭包使用了命名参数(resultsHandler)。您也不再需要“->Void”代码。顺便说一句,这适用于Swift 3

该错误具有误导性,因为它似乎无法确定类。在我的情况下,因为我的查询是一个初始化为nil的属性,因此是可选的,所以我假设这就是问题所在。真正的问题是,它不明确,因为构造函数不正确,并且因为它不正确,所以无法确定返回的对象应该是什么是

如果它有助于进一步,这是我的一些代码:

self.acQuery = HKAnchoredObjectQuery(type: sampleType,
                                         predicate: pred,
                                         anchor: self.acAnchor,
                                         limit: Int(HKObjectQueryNoLimit),
                                         resultsHandler: { (query, newSamples, deletedSamples, newAnchor, error) in

                                            self.updateHeartRates(newSamples: newSamples, deletedSamples: deletedSamples, newAnchor: newAnchor, error: error);
                                            })

祝你好运!

Hi!你找到这个问题的解决方案了吗?Hi@Philip感谢你的写作。目前还没有解决方案。Hi!你找到这个问题的解决方案了吗?Hi@Philip感谢你的写作。目前还没有解决方案。