微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Swift 从记录器读取加速度计数据

如何解决使用 Swift 从记录器读取加速度计数据

当应用程序进入后台时,我试图在苹果应用程序的后台运行一个加速度计,我打算使用 CMSensorRecorder 来记录数据。我在访问数据时遇到问题,并在尝试迭代结果并打印每一行时不断出错。下面是我使用的代码

    func runBackgroundAccelerometer() {
            let recorder = CMSensorRecorder()
            
            // record data in background
            if CMSensorRecorder.isAccelerometerRecordingAvailable() {
                print("Accelerometer available")
                self.lastRecorderAccess = Date()
                recorder.recordAccelerometer(forDuration: 5 * 60)  // Record for 5 minutes
            }
            
        // METHOD 1
//        let list = recorder.accelerometerData(from: Date(timeIntervalSinceNow: -60),to: Date())
//        for row in list {
//            print(row)
//        }

        // METHOD 2
        if let list = recorder.accelerometerData(from: Date(timeIntervalSinceNow: -60),to: Date()) {
            for data in list{
                if let accData = data as? CMRecordedAccelerometerData{
                    let accX = accData.acceleration.x
                    let timestamp = accData.startDate
                    print(accX)
                    print(timestamp)
                }
            }
        }
    }

使用方法1打印数据导致错误

For-in 循环需要“CMSensorDataList?”符合“顺序”;你的意思是解开可选吗?

并使用方法2打印数据结果:

For-in 循环需要 'CMSensorDataList' 符合 'Sequence'

我在网上找到的示例当前不适用于最新的 swift 版本。我是 Swift 的新手,任何帮助将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。