我如何知道数组中元素的值是否已更改?

How do I know if a value of an element inside an array was changed?

使用的语言: Swift 2.3

例如我有一个名为 Doctor

的模型
class Doctor {
    var name = ""
    var number = 123
    init(name:String, number:String) { 
        self.name = name
        self.number = number
    }
}

在另一个class中,我把它变成了一个数组

class SomeClass {
    var doctors:[Doctor] = [
        Doctor(name: "Matt Smith", number: 11),
        Doctor(name: "David Tennant", number: 10),
        Doctor(name: "Peter Capaldi", number: 12)
    ]
}

然后出于某种原因我决定更改 index #2

的值
class SomeClass {
    ...
    // let's just say that this code was executed inside the code somewhere....
    func change() {
        doctors[2].name = "Good Dalek"
        // or
        doctors[2] = Doctor(name: "Christopher Eccleston", number: 9)
    }
    ...
}

我怎么知道doctors数组的值和以前不一样了?

我知道 filtersort 函数。我也知道如何使用 didSet 这样我就可以做到这一点

var doctors:[Doctor] = [] {
    didSet {
        // do something if `doctors` was changed
    }
}

简单地说,让 doctors 数组为 property observer:

class Doctor {
    var name = ""
    var number = 123
    init(name:String, number:Int) {
        self.name = name
        self.number = number
    }
}


class SomeClass {
    var doctors: [Doctor] = [
        Doctor(name: "Matt Smith", number: 11),
        Doctor(name: "David Tennant", number: 10),
        Doctor(name: "Peter Capaldi", number: 12)
        ] {
        didSet {
            print("doctros array has been modifed!")
        }
    }
}


let someClass = SomeClass()
someClass.doctors[0] = Doctor(name: "New Doctor", number: 13) // "doctros array has been modifed!"

someClass.doctors.append(Doctor(name: "Appended Doctor", number: 13)) // "doctros array has been modifed!"

someClass.doctors.remove(at: 0) // "doctros array has been modifed!"

请注意,每个添加、编辑或删除操作都会影响 doctors 数组调用 didSet 代码 (print("doctros array has been modifed!"))。