如何解决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: "~")
}
}
使用这种方法,我检查了保存的矩阵:
作为一个示例,-0.34620976 m11矩阵具有436个重复,这没有意义,因为它似乎仅附加了一个捕获数据,而不是整个捕获数据。
我不愿意像这样使用join(separator:)
来保存它,我很累:
let capturedData = savedmatrix.minimalDescription
似乎更合理,因为只有两个相同:
停止按钮中正在发生什么?我需要使用join(separator:)
来连接其他数据。有人可以解释为什么我仅附加一个数据集以及如何正确附加整个数据集吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)