2017-06-28 8 views
-1

私は正常にHealthKitに書き込むことができましたが、これらの値を受け取ると常に0が返されます。最新の体重値を返そうとしています。速報を使用してHealthKitで毎回数値0が返されていますか?

これは私が体重を読む機能である:

public func readWeight(result: @escaping (Double) -> Void) { 
    print("Weight") 
    let quantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bodyMass) 

    let weightQuery = HKSampleQuery(sampleType: quantityType!, predicate: nil, limit: 1, sortDescriptors: nil) { 

     query, results, error in 

     if (error != nil) { 
      print(error!) 
      result(0.0) 
     } 

     guard let results = results else { 
      print("No results of query") 
      result(0.0) 
      return 
     } 

     if (results.count == 0) { 
      print("Zero samples") 
      result(0.0) 
      return 
     } 

     guard let bodymass = results[0] as? HKQuantitySample else { 
      print("Type problem with weight") 
      result(0.0) 
      return 
     } 
     result(bodymass.quantity.doubleValue(for: HKUnit.pound())) 
    } 

    healthKitStore.execute(weightQuery) 
} 

これは、私はそれを変数に設定する方法です:

readWeight() { weight in 
    Weight = weight 
} 

ありがとう!

+1

[最新のHKSampleQueryデータポイントをswift 3で入手できますか?](https://stackoverflow.com/questions/44849723/get-the-latest-hksamplequery-datapoint-in-swift-3) – ninjaproger

+0

@ninjaproger私はそれを作った...質問を少し明確にすることができるようにしました。別の質問があります。 – arodebaugh

+0

@arodebaugh両方の質問で同じ問題がある場合は、最初のものを更新して別のものを開いてはいけません開いた。 – Cristik

答えて

0

あなたの質問が正しく理解されていれば、変数bodymassが配列results[0]の最初の要素として宣言されています。配列の最後の要素である必要があります。健康アプリで体重の最初の値が0であるかどうかを確認してください。bodymassは、resultsの最初の要素であり、健康アプリの最初の値であるためです。お役に立てれば。

関連する問題