2017-10-12 60 views
0

你好,我想抓住最新數據點每天體重的定義的時間間隔 (在我來說,我需要一個星期的時間間隔,但只有每一天的最後一個項目。)我怎樣才能獲取在規定的時間間隔從HealthKit數據的最近體重條目的每一天

實際上,使用這個代碼,我可以從開始X日起所有條目到最後X日期

let query = HKSampleQuery(sampleType: type!, predicate: predicate, 
             limit: 0, sortDescriptors: nil, resultsHandler: { (query, results, error) in 
             if let myResults = results { 
              for result in myResults { 
               let bodymass = result as! HKQuantitySample 
               let weight = bodymass.quantity.doubleValue(for: unit) 
               Print ("this is my weight value",weight ) 
              } 
             } 
             else { 
              print("There was an error running the query: \(String(describing: error))") 
             } 

此查詢返回測量時間範圍內所有消耗體重的樣本。 我只想返回記錄的最後一個條目是否有任何方式與heath-kit查詢?

我試過定義排序描述符,但我沒有找到一種方法使它在定義的時間間隔內工作。

感謝

I read thisthis one

回答

1

正如你說你想用一種描述,只是使用Date.distantPastDate()爲你的範圍,那麼就搶到第一:

func getUserBodyMass(completion: @escaping (HKQuantitySample) -> Void) { 

      guard let weightSampleType = HKSampleType.quantityType(forIdentifier: .bodyMass) else { 
       print("Body Mass Sample Type is no longer available in HealthKit") 
       return 
      } 

      //1. Use HKQuery to load the most recent samples. 
      let mostRecentPredicate = HKQuery.predicateForSamples(withStart: Date.distantPast, 
                    end: Date(), 
                    options: []) 
      let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, 
                ascending: false) 
      let limit = 1 
      let sampleQuery = HKSampleQuery(sampleType: weightSampleType, 
              predicate: mostRecentPredicate, 
              limit: limit, 
              sortDescriptors: [sortDescriptor]) { (query, samples, error) in 


               //2. Always dispatch to the main thread when complete. 
               DispatchQueue.main.async { 
                guard let samples = samples, 
                 let mostRecentSample = samples.first as? HKQuantitySample else { 
                  print("getUserBodyMass sample is missing") 
                  return 
                } 
                completion(mostRecentSample) 
               } 
      } 
      healthStore.execute(sampleQuery) 
    } 
相關問題