我正在尝试对 SceneKit SCNMatrix4
进行安全编码,使其符合NSSecureCoding
的要求,类似于以下内容:
if let transform = aDecoder.decodeObject(of: SCNMatrix4.self, forKey: DATA_KEY_TRANSFORM) {
self.transform = transform
}
但这会引发编译错误:
无法将类型“ SCNMatrix4.Type”的值转换为预期参数 输入“ [[AnyClass]”? (又名“可选”)
很显然SCNMatrix4
不是对象,这是行不通的原因,但是我当然不需要遍历{{ 1}},并使用以下代码进行编码:
Float
肯定不是吗?
对此进行安全编码的正确方法是什么?
答案 0 :(得分:1)
我提出了以下一种方法,与swiftShot示例中的方法相同:
SCNMatrix4 = SCNMatrix.init(float4x4)
float4x4 <= self.column[0] = float4
self.column[1] = float4
self.column[2] = float4
self.column[3] = float4
float4 <= with_4_Float.
答案 1 :(得分:1)
编码要求您先将矩阵包装成NSValue
,然后再将其拆开。参见init(scnMatrix4:)
和scnMatrix4Value
。