小编Mig*_*eta的帖子

如何在 Swift 中对 simd_float4x4 元素数组进行编码(将 simd_float4x4 转换为 Data)?

我正在构建一个应用程序,用于从 iPhone TrueDepth 摄像头捕获面部跟踪数据。

我需要将此数据写入文件,以便我可以将其用作另一个应用程序的基础。

在应用程序中,数据被保存到四个单独的数组中,其中一个包含 ARFaceGeometry 对象,另外三个包含作为 simd_float4x4 矩阵的变换坐标。

我将数组转换为数据对象,archivedData(withRootObject: requiringSecureCoding:)然后调用write(to:)它们来创建文件。

包含 ARFaceGeometry 数据的文件已正确写入和读回。但是这三个 simd_float4x4 数组并未被写入,尽管这样做的代码是相同的。与我的打印日志一起,给出的错误是“无法识别的选择器发送到实例”。

特性:

var faceGeometryCapture = [ARFaceGeometry]()
var faceTransformCapture = [simd_float4x4]()
var leftEyeTransformCapture = [simd_float4x4]()
var rightEyeTransformCapture = [simd_float4x4]()

var faceGeometryCaptureFilePath: URL!
var faceTransformCaptureFilePath: URL!
var leftEyeTransformCaptureFilePath: URL!
var rightEyeTransformCaptureFilePath: URL!
Run Code Online (Sandbox Code Playgroud)

建立文件 URL 的代码:

let fileManager = FileManager.default
let dirPaths = fileManager.urls(for: .documentDirectory,
                        in: .userDomainMask)
        
faceGeometryCaptureFilePath = dirPaths[0].appendingPathComponent("face-geometries.txt")
faceTransformCaptureFilePath = dirPaths[0].appendingPathComponent("face-transforms.txt")
leftEyeTransformCaptureFilePath = dirPaths[0].appendingPathComponent("left-eye-transforms.txt")
rightEyeTransformCaptureFilePath = dirPaths[0].appendingPathComponent("right-eye-transforms.txt")
Run Code Online (Sandbox Code Playgroud)

将数据写入文件的代码:

do {
    let …
Run Code Online (Sandbox Code Playgroud)

arrays nskeyedarchiver ios swift

2
推荐指数
1
解决办法
2380
查看次数

标签 统计

arrays ×1

ios ×1

nskeyedarchiver ×1

swift ×1