Swift:如何使用joinseparator附加整个数据集而不是一部分?

问题描述

我正在尝试保存附加的ARCamera变换矩阵。我有:

    var savedmatrix = [simd_float4x4?]()
    var beginSaving = false
    func session(_ session: ARSession,didUpdate frame: ARFrame) {
            guard let arCamera = session.currentFrame?.camera else { return }
            if beginSaving == true{
            let ARCameraTransform = arCamera.transform
            savedmatrix.append(ARCameraTransform)
            }
        }

我有一个开始收集的按钮:

private var fpsTimer = Timer()
private var captureData: [CaptureData] = [CaptureData]()

@IBAction private func startPressed() {
        captureData = [] // Clear data
        fpsTimer = Timer.scheduledTimer(withTimeInterval: 1/fps,repeats: true,block: {(timer) -> Void in self.recordData()})
        beginSaving = true
    }

还有一个用于停止收集的按钮:

struct CaptureData {
    var vertices: [SIMD3<Float>]
    var stringRepresentation: String {
        return "<"
    }
}

@IBAction private func stopPressed() {
    do {
        beginSaving = false
        fpsTimer.invalidate() //turn off the timer
        let capturedData = captureData.map{$0.stringRepresentation}.joined(separator:savedmatrix.minimalDescription)
        let dir: URL = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask).last! as URL
        let url = dir.appendingPathComponent("testing.txt")
        try capturedData.appendLineToURL(fileURL: url as URL)
    }
    catch {
        print("Could not write to file")
    }
}

extension Sequence {
    var minimalDescription: String {
        return map { "\($0)" }.joined(separator: "~")
    }
}

使用这种方法,我检查了保存的矩阵:

enter image description here

作为一个示例,-0.34620976 m11矩阵具有436个重复,这没有意义,因为它似乎仅附加了一个捕获数据,而不是整个捕获数据。

我不愿意像这样使用join(separator:)来保存它,我很累:

let capturedData = savedmatrix.minimalDescription似乎更合理,因为只有两个相同:

enter image description here

停止按钮中正在发生什么?我需要使用join(separator:)来连接其他数据。有人可以解释为什么我仅附加一个数据集以及如何正确附加整个数据集吗?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...