Swift&x2013;ARMeshAnchor到数据转换

Swift&x2013;ARMeshAnchor到数据转换,swift,augmented-reality,scenekit,arkit,realitykit,Swift,Augmented Reality,Scenekit,Arkit,Realitykit,在我的项目中,我试图将一个ARMeshAnchor存储到UserdDefaluts中,并将其转换为数据。我找不到解决办法 这是我的一个错误 实例方法encode(uuuwy:forKey:)要求armeshatch符合Encodable 也许最好将它们转换为SCNNode并尝试将节点转换为数据 为此,您应该使用NSKeyedArchiver类,您的代码可能如下所示: @IBOutlet var arView: ARView! fileprivate func convertMeshAnchor

在我的项目中,我试图将一个ARMeshAnchor存储到UserdDefaluts中,并将其转换为数据。我找不到解决办法

这是我的一个错误 实例方法
encode(uuuwy:forKey:)
要求
armeshatch
符合
Encodable

也许最好将它们转换为SCNNode并尝试将节点转换为数据


为此,您应该使用
NSKeyedArchiver
类,您的代码可能如下所示:

@IBOutlet var arView: ARView!

fileprivate func convertMeshAnchors() -> UserDefaults {

    guard let frame = arView.session.currentFrame else { return }
    let meshAnchors = frame.anchors.compactMap { $0 as? ARMeshAnchor }

    let data = try! NSKeyedArchiver.archivedData(withRootObject: meshAnchors,
                                          requiringSecureCoding: false)

    let savedAnchors = UserDefaults.standard
    savedAnchors.set(data, forKey: "MeshAnchors")
    savedAnchors.synchronize()

    return savedAnchors
}
请记住,在RealityKit中,还有一个场景对象,锚的集合位于其中:

arView.scene.anchors

我认为
requireingsecurecoding
参数应该是
false
,因为
ARAnchor.supportsSecureCoding
也会返回
false