2016-05-14 4 views
0

Я знаю, что эти вопросы задавали, но на них не ответили. Я пробовал такие темы: Heart Rate With Apple's HealthkitКак читать данные Health Heart Heart Heart?

Я попытался преобразовать это из Objective-C в Swift, но не работал.

Мой вопрос в том, что лучший способ читать данные о сердечном ритме из набора для здоровья. Я хочу иметь возможность читать каждое измерение сердечного ритма с момента его начала, и я хочу видеть отметки времени/дня указанных измерений.

Я попросил разрешения здесь:

import Foundation 
import UIKit 
import HealthKit 

class HealthKitManager: NSObject { 

static let healthKitStore = HKHealthStore() 

static func authorizeHealthKit() { 

    let healthKitTypes: Set = [ 
     HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!, 
    ] 

    healthKitStore.requestAuthorizationToShareTypes(healthKitTypes, 
                readTypes: healthKitTypes) { _, _ in } 
    } 
} 

Вот мой взгляд код контроллера на данный момент (я не знаю, почему это не работает):

import UIKit 
import HealthKit 

class ViewController: UIViewController { 

let health: HKHealthStore = HKHealthStore() 
let heartRateUnit:HKUnit = HKUnit(fromString: "count/min") 
let heartRateType:HKQuantityType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)! 
var heartRateQuery:HKQuery? 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

    @IBAction func authorizeTapped(sender: AnyObject) { 
    print("button tapped") 
    self.createStreamingQuery() 
    HealthKitManager.authorizeHealthKit() 

} 


func createStreamingQuery() -> HKQuery 
{ 
    let queryPredicate = HKQuery.predicateForSamplesWithStartDate(NSDate(), endDate: nil, options: .None) 

    let query:HKAnchoredObjectQuery = HKAnchoredObjectQuery(type: self.heartRateType, predicate: queryPredicate, anchor: nil, limit: Int(HKObjectQueryNoLimit)) 
    { (query:HKAnchoredObjectQuery, samples:[HKSample]?, deletedObjects:[HKDeletedObject]?, anchor:HKQueryAnchor?, error:NSError?) -> Void in 

     if let errorFound:NSError = error 
     { 
      print("query error: \(errorFound.localizedDescription)") 
     } 
     else 
     { 
      //printing heart rate 
      if let samples = samples as? [HKQuantitySample] 
      { 
       if let quantity = samples.last?.quantity 
       { 
        print("\(quantity.doubleValueForUnit(self.heartRateUnit))") 
       } 
      } 
     } 
    } 

    query.updateHandler = 
     { (query:HKAnchoredObjectQuery, samples:[HKSample]?, deletedObjects:[HKDeletedObject]?, anchor:HKQueryAnchor?, error:NSError?) -> Void in 

      if let errorFound:NSError = error 
      { 
       print("query-handler error : \(errorFound.localizedDescription)") 
      } 
      else 
      { 
       //printing heart rate 
       if let samples = samples as? [HKQuantitySample] 
       { 
        if let quantity = samples.last?.quantity 
        { 
         print("\(quantity.doubleValueForUnit(self.heartRateUnit))") 
        } 
       } 
      }//eo-non_error 
    }//eo-query-handler 

    return query 
} 


} 

я не могу получить что-нибудь, чтобы печатать на консоль, и это действительно то, что я хочу.

Также - этот код не распространяется на домашние задания, личные/профессиональные проекты и т. Д. Его просто для удовольствия/для изучения, и большая часть этого кода - это то, что я пробовал, и то, что я нашел, просматривая несколько стеков через поток и другие форумы.

+0

Вы когда-нибудь выполняли функцию 'createStreamingQuery'? – jtbandes

+0

Я сделал, и ничего не было напечатано на консоли, не знаю почему. – dnaland

+0

Вы использовали executeQuery в магазине здоровья? – jtbandes

ответ

0

Необходимо выполнить запрос.

let query = self.createStreamingQuery() 
self.health.executeQuery(query) 
+0

Спасибо! Еще одна вещь, теперь печатается адрес памяти, как я могу изменить это на читаемые данные? – dnaland

+0

@dnaland Извините, я не понимал, что вы говорите. Не могли бы вы прояснить? – penatheboss

+0

Когда я пытаюсь запустить код этого является то, что выводится на консоль: предупреждение: не удалось загрузить какой-либо объективно- Информация о классе C. Это значительно снизит качество имеющейся информации о типе. Как преобразовать в чтение данных? – dnaland

 Смежные вопросы

  • Нет связанных вопросов^_^