从 HealthKit 中提取时的额外字符

Posted

技术标签:

【中文标题】从 HealthKit 中提取时的额外字符【英文标题】:Extra Characters when pulling from HealthKit 【发布时间】:2017-06-27 00:41:13 【问题描述】:

当我使用 HKSampleQuery 提取我的 HealthKit 数据时,我创建了一个数组,然后填充了一个表格视图。但是,当我这样做时,我的 tableViewCell 在血糖数字之后还有许多其他字符。这是单元格的屏幕截图:

这里是我查询数据的地方。请帮忙!

    let endDate = NSDate()
    let startDate = NSCalendar.current.date(byAdding: .day, value: number, to: endDate as Date)
    let sampleType = HKSampleType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodGlucose)
    let mostRecentPredicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate as Date, options: [])
    let query = HKSampleQuery(sampleType: sampleType!, predicate: mostRecentPredicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil)  (query, results, error) in
        if let results = results as? [HKQuantitySample] 
            self.bloodGlucose = results
        
        DispatchQueue.main.async 
            self.tableView.reloadData()
        
    
    healthStore.execute(query)

这是我设置表格视图的地方...

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return bloodGlucose.count
  
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
                let currentCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
                let sugar = bloodGlucose[indexPath.row]
                currentCell.textLabel?.text = "\(sugar)"
                currentCell.detailTextLabel?.text = dateFormatter.string(from: sugar.startDate)
                return currentCell
 

【问题讨论】:

请包含您用于设置表格视图单元格的代码。 我编辑了问题以包含此内容。 @艾伦 【参考方案1】:

您似乎正在显示HKQuantitySample 的整个字符串表示形式。如果您只想显示HKQuantitySample 的数量,为什么不使用它的quantity 属性?

currentCell.textLabel?.text = "\(sugar.quantity)"

顺便说一句,您最好将您的endDate 声明为Date(而不是NSDate):

let endDate = Date()
let startDate = Calendar.current.date(byAdding: .day, value: number, to: endDate)
let sampleType = HKSampleType.quantityType(forIdentifier: .bloodGlucose)
let mostRecentPredicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate)

通常,非NS 类型更适合 Swift。

【讨论】:

效果很好!谢谢! 请注意,以这种方式生成标签文本永远不会正确本地化,从HKQuantitydescription 方法返回的字符串仅用于调试目的。如果您想做的是显示本地化的字符串表示,您需要使用类似NSMeasurementFormatter

以上是关于从 HealthKit 中提取时的额外字符的主要内容,如果未能解决你的问题,请参考以下文章

从 healthKit 中提取心率

从 healthKit 中提取心率

通过删除Laravel中的额外字符,从斜杠分隔的URL中提取参数值

应用程序终止时的 Healthkit 后台交付

应用程序终止时的 Healthkit 后台交付

Xamarin iOS 从 HealthKit 读取步数