简单的SpriteKit场景。一些节点有名称。我想仅在点击/点击某些节点时执行转换。因此,经过一些黑客攻击,我决定创建一个字符串集和下面的代码......
override func mouseDown(theEvent: NSEvent) {
let location = theEvent.locationInNode(self)
let node = self.nodeAtPoint(location)
if let nodeName: String? = node.name {
if nodeName != nil && questionKeys.contains(nodeName!) {
transitionToAskScene(nodeName!)
}
}
}
我希望没有嵌套的if语句,只需使用一个检查。虽然第一次检查仍然运行,即使nodeName为nil(我猜测因为它是一个Objective-C nil而不是一个Swift可选?)这样可行,但有没有人有更优雅的解决方案?
答案 0 :(得分:2)
假设你是最新的(xcode 7),你可能会像这样写你的代码。看起来您的问题更多的是如何避免使用嵌套ifs
if let nodeName = node.name where questionKeys.contains(nodeName) {
print("cool")
}