Swift 2.0 个错误

Swift 2.0 Errors

我正在尝试使用以下代码:

func redrawShape(shape: Shape, completion:() -> ()) {
    for (idx, block) in shape.blocks.enumerate() {
        let sprite = block.sprite!
        let moveTo = pointForColumn(block.column, row: block.row)
        let moveToAction: SKAction = SKAction.moveTo(moveTo, duration: 0.05)
        moveToAction.timingMode = .EaseOut
        sprite.runAction(moveToAction, completion: nil)
}

我在这一行遇到错误:

sprite.runAction(moveToAction, completion: nil)

错误说:

Cannot invoke 'runAction' with an argument list of type '(SKAction, completion: nil)'

我不知道如何解决这个问题。

完成处理程序不是可选的。你需要传递一些东西。你可以传递一个空的闭包:

sprite.runAction(moveToAction, completion: {})

或者,正如 matt 指出的那样,更好的方法是使用其他形式:

sprite.runAction(moveToAction)

马特的回答确实更好。

您调用了错误的方法。如果您没有完成处理程序,则不要调用 runAction(_:completion:)。调用简单的 runAction(_:),像这样:

 sprite.runAction(moveToAction)

换句话说,你有两个选择:

  • 如果你没有完成处理程序,你可以调用runAction(_:),或者

  • 如果您有完成处理程序,您可以调用 runAction(_:completion:)

但是你不能做的是调用runAction(_:completion:)如果你没有完成处理程序 - 正如你正在尝试做的那样。