首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能重用HKSampleQuery

不能重用HKSampleQuery
EN

Stack Overflow用户
提问于 2015-09-26 20:01:51
回答 1查看 515关注 0票数 2
  1. 为权重创建一个HKSampleQuery (但不要执行它)
  2. 在权重上创建和执行HKObserverQuery
  3. 在观察者查询的updateHandler中,执行权重示例查询

第一次执行样例查询时工作得很好。

下一次执行样例查询时,我会得到一个异常:“.‘NSInvalidArgumentException’,原因是:‘您无法启动已处于活动状态的查询’”

如果每次在观察者更新处理程序中创建一个新的样例查询,然后执行,它就能正常工作。

似乎我应该能够重用示例查询的第一个实例;没有任何相反的文档。

代码语言:javascript
复制
class HealthDemoC {
    let store = HKHealthStore()
    let wtType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)!
    var wtObserverQ: HKObserverQuery! = nil
    var wtSampleQ: HKSampleQuery! = nil

    init() {
        print("init: HealthDemoC")

        // !! only instantiating the query here and then executing repeatedly in observerUpdateHandler fails
        wtSampleQ = HKSampleQuery(sampleType: wtType, predicate: nil, limit: 0, sortDescriptors: nil, resultsHandler: wtResultsHandler)

        wtObserverQ = HKObserverQuery(sampleType: wtType as HKSampleType, predicate: nil, updateHandler: observerUpdateHandler)
        store.executeQuery(wtObserverQ)
    }

    func observerUpdateHandler (query: HKObserverQuery,
        completion: HKObserverQueryCompletionHandler,
        error: NSError?) {
            print("clbk: observerUpdateHandler")

            // instantianting a new query with each call to observerUpdateHandler works
            // wtSampleQ = HKSampleQuery(sampleType: wtType, predicate: nil, limit: 0, sortDescriptors: nil, resultsHandler: wtResultsHandler)

            store.executeQuery(wtSampleQ)
            completion()
    }

    func wtResultsHandler(query: HKSampleQuery, results: [HKSample]?, error: NSError?) {
        print("clbk: wtResultsHandler - \(results!.count)) results")

        // stopping the query doesn't prevent the exception
        // store.stopQuery(query)
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-27 23:47:37

虽然它不在正式文档中,但例外情况本身就是一种文档形式,它明确地告诉您所要的行为是什么。当您需要再次运行该查询时,您应该用相同的参数重新实例化该查询。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32801447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档