如何从查询中获取信息

Posted

技术标签:

【中文标题】如何从查询中获取信息【英文标题】:how to get the information out of the query 【发布时间】:2015-08-17 16:35:48 【问题描述】:

我创建了一个全局变量来存储信息

var stepsCount:Float = 0

并用它来存储查询中的步数

let stepsCountQuery = HKStatisticsQuery(quantityType: stepsCountType,quantitySamplePredicate: predicate, options: .CumulativeSum, completionHandler: 
(query, results, error) in
if results == nil
    print(error)

else 
    let info = results!.sumQuantity()
    if info == nil 
        print("no information available")
    
    else 
        stepsCount = Float(info!.doubleValueForUnit(HKUnit.countUnit()))
    

)

但是在原谅查询时变量似乎没有改变 有什么想法吗??

【问题讨论】:

查询真的被执行了吗?完成处理程序真的被调用了吗? 是的,这是因为我试图调用一个影响 UI 的函数(在查询内部)并且它工作但由于某种原因它无法更改此变量 您是否尝试过在 else 中进行断点以查看 info!.doubleValueForUnit(HKUnit.countUnit()) 返回的内容? 是的,我做到了,它完美地获得了正确的数字 你在哪里检查stepCount的值?它是从完成块内触发的吗? 【参考方案1】:

你的完成块应该看起来更像这样:

let stepsCountQuery = HKStatisticsQuery(quantityType: stepsCountType,quantitySamplePredicate: predicate, options: .CumulativeSum, completionHandler:  
       (query, results, error) in
    if results == nil
        print(error)
    
    else 
         let info = results!.sumQuantity()
         if info == nil 
             print("no information available")
         
         else 
             stepsCount = Float(info!.doubleValueForUnit(HKUnit.countUnit()))
             dispatch_async(dispatch_get_main_queue(), 
                   stepsTracker.setProgress(stepsCount/1300 , animated: true) 
              )
         
    
 )

【讨论】:

我应该把它放在 viewdidload 函数中吗? 这可能是放置它的好地方。

以上是关于如何从查询中获取信息的主要内容,如果未能解决你的问题,请参考以下文章

如何从由 SQL 查询填充的列表框中获取信息?

如何从公共分类账中获取信息 - 最大的钱包?

如何获取网页的header格式

从多个模型中获取信息时优化 django 查询

如何在 Android 中获取联系人的所有详细信息

使用 Firebase 和 Swift 从查询中获取信息 [重复]