Swift&x2013;ARMeshAnchor到数据转换
在我的项目中,我试图将一个ARMeshAnchor存储到UserdDefaluts中,并将其转换为数据。我找不到解决办法 这是我的一个错误 实例方法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
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
。