【问题标题】:Swift iOS SceneKit How do you secure encode an SCNMatrix4 with NSSecureCoding?Swift iOS SceneKit 如何使用 NSSecureCoding 对 SCNMatrix4 进行安全编码?
【发布时间】:2018-11-01 13:59:50
【问题描述】:

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

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

但这会引发编译错误:

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

显然SCNMatrix4 不是一个对象,这就是它不起作用的原因,但我肯定不需要遍历SCNMatrix4 中的16 个Float 中的每一个并编码每个与:

aDecoder.decodeFloat(forKey: "someKey")

确定不是?

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

【问题讨论】:

    标签: ios swift scenekit nssecurecoding


    【解决方案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.

    【讨论】:

      【解决方案2】:

      编码将要求您先将矩阵包装成NSValue,然后再解包。请参阅init(scnMatrix4:)scnMatrix4Value

      【讨论】:

        猜你喜欢
        • 2021-05-18
        • 2019-04-11
        • 2014-10-10
        • 1970-01-01
        • 2017-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多