无法赋值:'completionBlock 是一个 'let' 常量

Cannot assign to value: 'completionBlock is a 'let' constant

嘿,自从 a 移至 Swift 3 我得到这个错误,说我的 SCNTransaction 扩展中的 completionBlock 是一个 let 常量,我不确定如何将它更改为 "var" 有帮助吗?

Picture of Error here

代码:

extension SCNTransaction {
   class func animateWithDuration(_ duration: CFTimeInterval = 0.25, timingFunction: CAMediaTimingFunction? = nil, completionBlock: (() -> Void)? = nil, animations: () -> Void) {
     begin()
     animationDuration = duration
     completionBlock = completionBlock
     animationTimingFunction = timingFunction
     animations()
     commit()
   }
}

我认为这个问题与 class SCNTransaction 的实例变量 completionBlock 与你的 completionBlock 的参数同名有关功能。因此,代码行 completionBlock = completionBlock 被解释为对参数 completionBlock 的赋值,而不是同名实例变量。这是无效的,因为默认情况下函数参数是常量,用 let 声明。您需要做的就是消除您所指的 completionBlock 的歧义:

class func animateWithDuration(... completionBlock: (() -> Void)? = nil, ... ) {
    ... 
    self.completionBlock = completionBlock
    ...
}