2016-07-30 36 views
0

我收到一個錯誤「表達式類型HKAnchoredObjectQuery'是不明確的,沒有更多的內容」在healthkit代碼行「let heartRateQuery = HKAnchoredObjectQuery(type:數據類型,謂詞:nil,錨點:錨點,限制:Int(HKObjectQueryNoLimit)){(query,sampleObjects,deletedObjects,newAnchor,error) - >swift error'表達式類型'HKAnchoredObjectQuery'是不明確的沒有更多的上下文

該代碼是從一個示例項目複製粘貼的,在這一行上運行沒有錯誤,進入我的項目,現在它帶來了這個錯誤。我是一個初學者,會欣賞你的提示。

代碼:

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) 
+0

嗨!你有沒有找到解決這個問題的方法? – Philip

+0

嗨@Philip感謝您的寫作。目前還沒有解決方案。 –

回答

1

這一次讓我抓狂,我遇到了同樣的問題。我認爲,如果你改變你的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,BTW。

錯誤是誤導,因爲它似乎不能確定類。在我的情況下,因爲我的查詢是一個屬性初始化爲零,因此是可選的,我認爲這是問題。真正的問題是它是不明確的,因爲構造函數不正確,並且因爲它不正確,它不能確定返回的對象應該是什麼。

如果進一步的幫助,這是我的一些代碼工作的:

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

祝你好運!

相關問題