【发布时间】:2017-09-01 22:59:18
【问题描述】:
在我的应用中,我每 20 毫秒记录一次从设备的加速度计获取的加速度数据。我有一个恰当地命名为AccelerationData 的类来存储这些值。我还以毫秒为单位记录每个读数的时间戳。
class AccelerationData {
var timestamp: Int64 = 0 // in milliseconds
var x: Double = 0.0
var y: Double = 0.0
var z: Double = 0.0
var timestampDate: Date {
return Date(milliseconds: timestamp)
}
var JSONDictionary: [String: Any] {
let jsonDictionary: [String: Any] = [
"X": x,
"Y": y,
"Z": z,
"TIME": timestamp
]
return jsonDictionary
}
}
extension Date {
var milliseconds: Int64 {
return Int64(self.timeIntervalSince1970 * 1000)
}
init(milliseconds: Int64) {
self = Date(timeIntervalSince1970: TimeInterval(milliseconds / 1000))
}
}
录制结束后,我需要为所有这些读数创建一个 JSON 正文。我不想获取所有这些读数,而是想通过每 500 毫秒(0.5 秒)发生的读数来过滤它。
根据我的研究我found,您可以将flatMap 用于这样的任务,但是当涉及时间戳等动态值时,我不确定如何应用它。
如果您能提供一些关于如何开始的指导,我将不胜感激。
【问题讨论】:
-
请注意,
Date(timeIntervalSince1970:)的时间间隔以 秒为单位, 而不是毫秒。 -
@MartinR 哦,是的!我实际上有一个单独的扩展方法来做到这一点。我忘记更新类中的属性。更新了我的代码。
-
按“每 500 毫秒”读数过滤?如果读数之间间隔 2 秒会发生什么?
标签: ios arrays swift filtering