首页 > 解决方案 > NSSecureCoding 在简单地创建 SCNNode 时抛出

问题描述

我正在尝试从我的 .scn(最初是我转换为 .scn 的 DAE 文件)创建一个 SCNNode,当我这样做时,控制台会生成以下内容:

[general] NSSecureCoding allowed classes list contains [NSObject class],
which bypasses security by allowing any Objective-C class to be implicitly
decoded. Consider reducing the scope of allowed classes during decoding by
listing only the classes you expect to decode, or a more specific base class
than NSObject.

这是导致抛出的代码:

if let usrScene = SCNScene(named: "Test.scnassets/Models/player.scn") {
    usr = usrScene.rootNode.childNode(withName: "root", recursively: true)!
}

场景图如下:root->player

我怎样才能删除投掷(或者我应该)?用外行的话来说是什么意思?

标签: iosswiftscenekit

解决方案


对于那些有同样问题的人:

我从来没有弄清楚 throw 是什么意思,但我确实设法用以下代码摆脱了它:

extension SCNNode {
    convenience init?(daePath: String) {
        self.init()

        guard let scene = SCNScene(named: daePath) else {
            return
        }

        for childNode in scene.rootNode.childNodes {
            addChildNode(childNode)
        }
    }
}

然后像这样导入...

usr = SCNNode(daePath: "Test.scnassets/Models/player.dae")

推荐阅读