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

如何解决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(将#修改为@)

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?