如何通过关闭进行论证?

时间:2016-02-04 16:03:15

标签: swift

调用参数为关闭的func时出错。

这是我的代码:

 func animateSwap(swap: Swap, completion: () -> () = {}) {

    let spriteA = swap.cookieA.sprite!
    let spriteB = swap.cookieB.sprite!

    spriteA.zPosition = 100
    spriteB.zPosition = 90

    let Duration: NSTimeInterval = 0.3

    let moveA = SKAction.moveTo(spriteB.position, duration: Duration)
    spriteA.runAction(moveA, completion: completion)

    let moveB = SKAction.moveTo(spriteA.position, duration: Duration)
    spriteB.runAction(moveB)

}

当我像那样调用func时

 scene.animateSwap(swap, completion: handleMatches()){

       }

我有一个错误:

  

额外的论点'完成'在电话中

1 个答案:

答案 0 :(得分:0)

completion的结构对您而言是错误的。将第一行替换为:

func animateSwap(swap: Swap, completion: (() -> Void)?) -> () {

并将return completion!()添加到函数的末尾。但是,这意味着您无法使用completion: nil运行该函数,因此您还可以在返回之前检查完成是否为nil。

并像这样使用它:

scene.animateSwap(swap, completion: {
    // All code here will be run on completion
    handleMatches()
})