Swift 3:无法调用非函数类型的值(() - > Void)?'

问题描述:

此功能的所有诅咒,也被称为斯威夫特3.迁移到斯威夫特3,Xcode中,我的友善和可爱的IDE后的诅咒工作过,显示这个令人沮丧的错误逆势而行SCNTransaction.completionBlockSwift 3:无法调用非函数类型的值(() - > Void)?'

不能调用值非函数类型'(() - > Void)?'

其他几个帖子处理类似的错误,但这些解决方案都不适用。

这条线有什么问题?

func test(_ block: SCNNode, animated: Bool) { 
    // Do stuff 
    SCNTransaction.begin() 
    SCNTransaction.animationDuration = animated ? AnimationDur : 0.0 
    SCNTransaction.completionBlock { 
     block.removeFromParentNode() 
    } 
    // Animate stuff 
    SCNTransaction.commit() 
} 

SCNTransaction.completionBlock是一个class属性。也许你是这个意思?

//        ↓ 
SCNTransaction.completionBlock = { 
    block.removeFromParentNode() 
} 
+0

是的,谢谢!令人沮丧的变化在斯威夫特3多少。 – Crashalot

SCNTransaction.completionBlock不是您可以通过尾随闭包语法调用的函数,它是一个属性。你需要关闭分配给它:

SCNTransaction.completionBlock = { 
    block.removeFromParentNode() 
} 

换句话说,你只需要添加一个等号。

+0

对不起,kennytm击败你的答案,但upvoted尽管如此:) – Crashalot

+0

错过了8秒:) –

+0

对不起,但因为你看起来像你是一个Swift 3专家,我会发布另一个给你。 :) – Crashalot