我一直在搜索Swift文档和谷歌搜索,但无法找到如何从这样的块返回值:
func checkIfplayerFellDown() -> Bool {
self.enumerateChildNodesWithName("brick", usingBlock: {
(node: SKNode!, stop: UnsafeMutablePointer <ObjCBool>) -> Bool in
if (node.position.y < self.player.position.y) { return false }
})
return true
}
问题是因为我不了解块。我通常会这样使用它们:
world.enumerateChildNodesWithName("name") {node, stop in
if (node.position.y < self.size.height*0.5) {
node.removeFromParent()
}
}
如何从这些闭包中返回一个布尔值?我知道我应该在某个地方使用语法,我尝试了一些东西,但是没有一个能够工作,因为我不知道这些块是如何工作的。
赞赏任何解释或如何做到这一点的例子。
答案 0 :(得分:2)
使用局部变量(在块外但在方法内)将结果传递出块,并在想要停止迭代时将stop
设置为true
:
func playerFellDown() -> Bool {
var result = true
self.enumerateChildNodesWithName("brick") { (child, stopOut) in
if child.position.y < self.player.position.y {
result = false
stopOut.memory = true
}
}
return result
}