2016-11-13 8 views
0

Swift 3に移動して以来ずっとでした。私のcompletionBlock in my SCNTransaction拡張子は定数です。 "var"の助け?値に割り当てることはできません: 'completionBlockは' let '定数です

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() 
    } 
} 
+0

を自分自身への割り当てを回避するために、カスタム 'completionBlock'の名前を変更することを検討してください。 – vadian

+0

OKこれはうまく動作しているかもしれません。分単位で感謝します。@vadian – Hunter

+0

okありがとうございました。 – Hunter

答えて

2

私はこの問題は、事実と関係していると思うあなたの関数のパラメータcompletionBlockとしてクラスSCNTransaction株式のcompletionBlock同じ名前の変数のインスタンス。その結果、コードcompletionBlock = completionBlockの行は、同じ名前のインスタンス変数ではなく、completionBlockというパラメータへの値の代入として解釈されています。関数パラメータはデフォルトではletと宣言されている定数なので、これは無効です。あなたがする必要があるすべては、あなたが参照しているcompletionBlockの曖昧削除です:

class func animateWithDuration(... completionBlock: (() -> Void)? = nil, ...) { 
    ... 
    self.completionBlock = completionBlock 
    ... 
} 
関連する問題