Swift 3:无法调用非函数类型“(()-> Void)的值?”
Posted
技术标签:
【中文标题】Swift 3:无法调用非函数类型“(()-> Void)的值?”【英文标题】:Swift 3: Cannot call value of non-function type '(() -> Void)?' 【发布时间】:2016-09-22 03:33:33 【问题描述】:这个函数在所有诅咒的诅咒之前工作,也被称为 Swift 3。在迁移到 Swift 3 之后,Xcode,我友好而可爱的 IDE,在SCNTransaction.completionBlock
行显示这个令人沮丧的错误:
不能调用非函数类型'(() -> 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()
【问题讨论】:
【参考方案1】:SCNTransaction.completionBlock 是一个类属性。也许你是这个意思?
// ↓
SCNTransaction.completionBlock =
block.removeFromParentNode()
【讨论】:
好的,谢谢!令人沮丧的是 Swift 3 发生了多大的变化。【参考方案2】:SCNTransaction.completionBlock
不是一个可以通过尾随闭包语法调用的函数,它是一个属性。您需要将闭包分配给它:
SCNTransaction.completionBlock =
block.removeFromParentNode()
换句话说,你只需要添加一个等号。
【讨论】:
抱歉,kennytm 击败了你,但仍然支持 :) 错过了 8 秒 :) 抱歉,您看起来像是 Swift 3 专家,所以我会再为您发布一个。 :) 这里是 q:***.com/questions/39630247/…。如果您能提供帮助,谢谢!以上是关于Swift 3:无法调用非函数类型“(()-> Void)的值?”的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 错误“无法调用非函数类型 'UITableView!' 的值” [关闭]
无法在 Swift 3 中调用非函数类型“UICollectionView”的值
无法调用非函数类型“HTTPURLResponse?”的值- 阿拉莫菲尔 4.0
Swift 3 [String: AnyObject]() 给出了不能调用非函数类型 UInt -> Data 的值