我正在构建一个应用程序,用于从 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)