Burada olup bitenden emin olmadığından emin olun, bu oldukça düz bir şekilde ileriye dönük olmalıdır. , bir mutasyon işlevine sahip bir uzantı. testClass.testFunc'da, hatada bildirilen mtkAnimQueAppend kullanmayı denediğimde, bu hatayı alıyorum: "Değişken değerde mutasyona uğrayan üye kullanılamıyor:" 'değişmezdir.Swift 2 Protokol eklentisinde mutasyon işlevini kullanmayla ilgili hata "Değişken değerde mutasyona uğrayan üye kullanılamıyor: 'kendi kendini değiştiremez':
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
}
}
Tüm bu sorunu birkaç düzeyde oldukça inanılmaz buluyorum. Swift ile yapmak istediğiniz ilk şey, elbette, denetleyiciler için bu şekilde çalışan bir karıtır. Yani protokol yönelimli bir dil. Ve ios "denetleyicileri görüyor". Peki, ilk yapman gereken nedir? Benim için (A) Apple'ın bunu getgodan ayırmadığı ve (B) meselenin çok karanlık olduğu inancının ötesinde. Her yer için 10.000 QA olmalı! Ah iyi. – Fattie