如何在Swift 2.0中使用enumerateNodeWithName?

时间:2015-07-20 10:42:10

标签: swift sprite-kit

我用XCode 6.4编写了一款游戏,并希望使用XCode 7.0 beta将其移植到Swift 2.0。

我遇到以下代码的问题

self.enumerateChildNodesWithName(kShipName) {
    node, stop in
    shipNode = node
}

当我尝试构建时,我收到错误

Cannot invoke 'enumerateChildNodesWithName' with an argument list of type '(String, (_, _) -> _)'

如何更改通话?我真的尝试了很多不同的东西: - (

谢谢!

1 个答案:

答案 0 :(得分:0)

如果shipNode在其他位置定义为SKSpriteNode类型,则不能仅在关闭中为该变量指定node。这是因为node属于SKNode类型,如果没有强制转换,您无法从更通用的类型分配到更具体的类型。试试这个:

self.enumerateChildNodesWithName(kShipName) {
    node, stop in
    shipNode = node as! SKSpriteNode 
}

您看到隐藏错误消息的原因是因为您在单语句闭包中存在类型错误 - 这使得编译器不确定您是否尝试在闭包中使用隐式返回语句, turn使得它不确定闭包的返回类型,这反过来使它认为你将无效的参数类型传递给enumerateChildNodesWithName