在我的SKScene中,我想检查是否有特定类型的节点。因为我多次需要这样的东西,所以我试图创建以下函数,它接受一个类型作为函数,但它不编译,有什么帮助吗?
extension SKNode {
func containsObject(ofType type: Any) -> Bool {
return children.contains(where {$0 is type}) ? true : false
}
}
错误:
使用未声明的类型“type”
最佳答案
您需要将函数设为泛型函数,并检查泛型类型参数而不是输入参数。
extension SKNode{
func containsObject<T>(ofType: T.Type) -> Bool {
return children.contains(where: {$0 is T})
}
}
这就是你所说的:
let node = SKNode()
class MyNode: SKNode {
var title = ""
}
let myNode = MyNode()
node.addChild(myNode)
node.containsObject(ofType: MyNode.self) //returns true
let otherNode = SKNode()
otherNode.addChild(SKNode())
otherNode.containsObject(ofType: MyNode.self) //returns false
关于ios - 检查场景是否包含特定类型的节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45837100/