Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 带有类数组的SKNode子节点_Swift_Sprite Kit - Fatal编程技术网

Swift 带有类数组的SKNode子节点

Swift 带有类数组的SKNode子节点,swift,sprite-kit,Swift,Sprite Kit,我试图编写一个方法来查找属于某个特定类的SKNode的子级,但这里出现了一个EXC错误 有人知道为什么会这样吗 import SpriteKit extension SKNode { func children(#klasses: [AnyClass]) -> [SKNode] { var matchedNodes = [SKNode]() for child in children as [SKNode] { for klass in klasses {

我试图编写一个方法来查找属于某个特定类的SKNode的子级,但这里出现了一个EXC错误

有人知道为什么会这样吗

import SpriteKit

extension SKNode {
  func children(#klasses: [AnyClass]) -> [SKNode] {
    var matchedNodes = [SKNode]()
    for child in children as [SKNode] {
      for klass in klasses {
        if child.isKindOfClass(klass) {
          matchedNodes.append(child)
        }
      }

      matchedNodes += child.children(klasses: klasses)
    }
    return matchedNodes
  }

}

class Apple: SKNode {}
class Orange: SKNode {}

let apple = Apple()
let orange = Orange()

apple.addChild(orange)

let fruits = apple.children(klasses: [Apple.self, Orange.self])
错误:

执行被中断,原因:EXC_BAD_指令(代码=EXC_i386_INVOP,子代码=0x0)。

请尝试此代码

extension SKNode {
    func children(#klasses: [AnyObject]) -> [SKNode] {
        var matchedNodes = [SKNode]()
        for child in children as [SKNode]{
            for klass in klasses {
                if child.dynamicType === klass {
                    matchedNodes.append(child)
                }
            }
            matchedNodes += child.children(klasses: klasses)
        }
        return matchedNodes
    }
}

这管用!我会支持你的答案,但显然我需要一个15 lol的声誉-谢谢!