Swift watchOS 2 - CMSensorDataList

前端 未结 3 1481
忘了有多久
忘了有多久 2020-12-19 08:10

Short: I don\'t know how to extract the CMRecordedAccelerometerData from the CMSensorDataList after getting one from the CMSensorRecorder. Apple isn\'t providing any documen

3条回答
  •  醉酒成梦
    2020-12-19 08:41

    Here's a Swift 4 approach. First, you’ll need to make CMSensorDataList conform to Sequence by means of an extension:

    extension CMSensorDataList: Sequence {
        public typealias Iterator = NSFastEnumerationIterator
        public func makeIterator() -> NSFastEnumerationIterator {
            return NSFastEnumerationIterator(self)
        }
    }
    

    Now you can iterate over CMSensorDataList to obtain CMRecordedAccelerometerData instances, each consisting of a timestamp and an acceleration:

    let rec = CMSensorRecorder() // and d1 and d2 are Dates
    if let list = rec.accelerometerData(from: d1, to: d2) {
        for datum in list {
            if let accdatum = datum as? CMRecordedAccelerometerData {
                let accel = accdatum.acceleration
                let t = accdatum.timestamp
                // do something with data here
            }
        }
    }
    

提交回复
热议问题