Non so cosa sta succedendo qui, sembra che dovrebbe essere abbastanza semplice. , un'estensione con una funzione di muting Le cose stanno saltando nel testClass.testFunc, quando provo e uso mtkAnimQueAppend dichiarato nell'estensione, ottengo questo errore: "Non posso usare il membro mutante su valore immutabile: 'self 'è immutabile.Swift 2 Errore nell'uso della funzione di muting nell'estensione del protocollo "Impossibile utilizzare il membro mutante su un valore immutabile: 'self' è immutabile
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
}
}
Trovo che l'intera questione sia abbastanza incredibile su un certo numero di livelli. La prima cosa che vuoi fare con Swift è ovviamente creare un mixin che funzioni in questo modo, per i controller di visualizzazione. Voglio dire che è un linguaggio orientato al protocollo. E ios "è vista controller". Quindi qual è la prima cosa che fai? Per me è incredibile che (A) Apple non l'abbia tolto dal getgo, e (B) il problema sia così oscuro. Dovrebbero esserci 10.000 QA su questo ovunque! Ah bene. – Fattie