Swift 2 Fehler mit mutierend Funktion in der Protokoll-Erweiterung "Nicht verwenden mutierend Mitglied auf unveränderlichen Wert: "selbst" ist unveränderlich

Nicht wissen was hier Los ist, wie es scheint, sollte es werden ziemlich straight-forward. Ich habe ein Protokoll, das veränderlich var, eine Erweiterung mit einer mutierenden Funktion. Die Dinge sind kacken sich in die testClass.testFunc, wenn ich versuchen und verwenden Sie mtkAnimQueAppend erklärt in der Verlängerung, bekomme ich diesen Fehler: "Nicht verwenden mutierend Mitglied auf unveränderlichen Wert: "selbst" ist unveränderlich.

protocol MTKAnimateValueDelegate {
    var mtkAnimQue:[MTKAnimateValue]? {get set}
}

extension MTKAnimateValueDelegate {
    ///Adds element to que
    mutating func mtkAnimQueAppend(element:MTKAnimateValue) {

        if mtkAnimQue != nil {
          mtkAnimQue?.append(element)
        } else {
          mtkAnimQue = [element]
        }
    }
}

class testClass: MTKAnimateValueDelegate {

  var mtkAnimQue:[MTKAnimateValue]?

  func testFunc() {
    var animValue = MTKAnimateValue(fromValue: 10, toValue: 20, inSeconds: 2)
    animValue.isAnimating = true
    mtkAnimQueAppend(animValue) //ERROR: "Cannot use mutating member on immutable value: 'self' is immutable
  }

}
  • Ich finde diese ganze Angelegenheit schon unglaublich auf mehreren Ebenen. Die sehr erste, was Sie tun möchten, mit Swift, ist natürlich eine mixin, dass Werke wie dieses, für view-Controller. Ich meine, es ist ein Protokoll-orientierte Sprache. Und ios "ist view-Controller". Also, was ist die erste Sache, die Sie tun? Für mich ist es unglaublich, dass (A) Apple hat nicht aufgeräumt, dies von Beginn an entgegen zu wirken, und (B) das Thema ist so obskur. Es sollte 10,000 QA über das überall! Ah gut.
Schreibe einen Kommentar