【发布时间】:2021-05-24 06:36:11
【问题描述】:
我正在尝试使用标准 for in 循环快速遍历这组 HealthKit 样本,但我一直收到错误消息。
这是我要运行的代码:
for x in samples! as [HKSample] {
let data = samples![x] as! HKQuantitySample
let unit = HKUnit(from: "cal")
let cal = data.quantity.doubleValue(for: unit)
print(cal)
}
这是它返回的错误:
Subscript 'subscript(_:)' requires that 'HKSample' conform to 'RangeExpression'
作为参考,当您指定要访问的数组中元素的编号时,相同的代码会起作用:
for x in samples! as [HKSample] {
let data = samples![0] as! HKQuantitySample
let unit = HKUnit(from: "cal")
let cal = data.quantity.doubleValue(for: unit)
print(cal)
}
但正如您所料,这只是获取数组中的第一个元素,并反复迭代与数组中的元素相同的次数。
【问题讨论】:
-
尝试
for sample in samples as? [HKQuantitySample] ?? [] {然后let cal = sample.quantity.doubleValue(for: HKUnit(from: "cal"))
标签: arrays swift xcode for-loop