0

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

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

但这会引发编译错误:

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

显然SCNMatrix4不是一个对象,这就是为什么这不起作用的原因,但我肯定不需要遍历 16Float中的每一个SCNMatrix4并使用以下代码对每个进行编码:

aDecoder.decodeFloat(forKey: "someKey")

确定不是吗?

安全编码的正确方法是什么?

4

2 回答 2

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.

于 2018-11-01T14:48:37.187 回答
1

编码将要求您先将矩阵包装成NSValue第一个,然后再打开它。见init(scnMatrix4:)scnMatrix4Value

于 2018-11-03T13:35:09.063 回答