2016-07-30 13 views
0

「式type' HKAnchoredObjectQueryは、より多くのコンテンツがなくても曖昧です」というメッセージが表示されます。let heartRateQuery = HKAnchoredObjectQuery "スワップエラー '式のタイプ' 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

この1つは狂気私を運転し、私は同じ問題に遭遇しました。

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)を使用します。私は、あなたがこれにあなたのheartRateQuery初期化ラインを変更した場合、それがうまくいくと思います。また、 " - > 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); 
              }) 

幸運!

関連する問題