Ändern Sie den Wert, wird festgelegt in der variable willSet block

Ich versuche zu Sortieren das array, wird vor Einstellung aber das argument von willSet ist unveränderlich und sort mutiert der Wert. Wie kann ich das überwinden dieser Grenze?

var files:[File]! = [File]() {
    willSet(newFiles) {
        newFiles.sort { (a:File, b:File) -> Bool in
            return a.created_at > b.created_at
        }
    }
}

Diese Frage aus meinem eigenen Projekt-Zusammenhang, habe ich diesen Kern:

class Person {
    var name:String!
    var age:Int!

    init(name:String, age:Int) {
        self.name = name
        self.age = age
    }
}

let scott = Person(name: "Scott", age: 28)
let will = Person(name: "Will", age: 27)
let john = Person(name: "John", age: 32)
let noah = Person(name: "Noah", age: 15)

var sample = [scott,will,john,noah]



var people:[Person] = [Person]() {
    willSet(newPeople) {
        newPeople.sort({ (a:Person, b:Person) -> Bool in
            return a.age > b.age
        })

    }
}

people = sample

people[0]

Bekomme ich die Fehlermeldung besagt, dass newPeople ist nicht veränderlich und sort versucht zu mutieren.

InformationsquelleAutor der Frage Mohsen | 2015-01-07

Schreibe einen Kommentar