我的代码是:

for child in viewsArray[i].children {
    let childNode = child as! SKSpriteNode
    if childNode.color == UIColor.blackColor() && childNode.alpha == 1 {
        childNode.alpha = 0.5
    }
}

它给了我这个错误:
无法将“skcropnode”(0x1a04415a0)类型的值强制转换为“skspritenode”(0x1a0441230)。
所以我的问题是如何在我写let childNode = child as! SKSpriteNode之前检查孩子的类型,以便避免这个错误?

最佳答案

如果你想使用函数式编程,下面是代码

viewsArray[i].children
    .flatMap { $0 as? SKSpriteNode }
    .filter { $0.color == .blackColor() && $0.alpha == 1 }
    .forEach { $0.alpha = 0.5 }

关于swift - swift 。我如何获得node.children的类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38995320/

10-10 04:09