Swift iOS SceneKit如何使用NSSecureCoding安全编码SCNMatrix4?

时间:2018-11-01 13:59:50

标签: ios swift scenekit nssecurecoding

我正在尝试对 SceneKit SCNMatrix4进行安全编码,使其符合NSSecureCoding的要求,类似于以下内容:

if let transform = aDecoder.decodeObject(of: SCNMatrix4.self, forKey: DATA_KEY_TRANSFORM) {
    self.transform = transform            
}

但这会引发编译错误:

  

无法将类型“ SCNMatrix4.Type”的值转换为预期参数   输入“ [[AnyClass]”? (又名“可选”)

很显然SCNMatrix4不是对象,这是行不通的原因,但是我当然不需要遍历{{ 1}},并使用以下代码进行编码:

Float

肯定不是吗?

对此进行安全编码的正确方法是什么?

2 个答案:

答案 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