Better way to run multiple HealthKit sample queries?

后端 未结 3 1542
花落未央
花落未央 2021-01-14 14:30

I have a scenario where I need to retrieve multiple sets of data from HealthKit -- body temperature, weight, and blood pressure. I need all 3 before I can continue processin

3条回答
  •  無奈伤痛
    2021-01-14 14:57

    You're going to want to use GCD dispatch groups.

    First, set up a global variable for the main thread

    var GlobalMainQueue: dispatch_queue_t {
      return dispatch_get_main_queue()
    }
    

    Next, create the dispatch group:

    let queryGroup = dispatch_group_create()
    

    Right before your queries execute, call:

    dispatch_group_enter(queryGroup)
    

    After your query executes, call:

    dispatch_group_leave(queryGroup)
    

    Then, handle your completion code:

    dispatch_group_notify(queryGroup, GlobalMainQueue) {
      // completion code here
    }
    

提交回复
热议问题