我如何知道数组中元素的值是否已更改? [英] How do I know if a value of an element inside an array was changed?
问题描述
使用的语言: Swift 2.3
Language Used: Swift 2.3
例如,我有一个名为 Doctor
class Doctor {
var name = ""
var number = 123
init(name:String, number:String) {
self.name = name
self.number = number
}
}
在另一个类中,我将其放入数组
And in another class I made it into an array
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
And then for some reason I decide to change the value of 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
数组的值与以前不同?
How will I know that the value of the doctors
Array is not the same as before?
我确实知道 filter
和 sort
函数.我也知道如何使用 didSet
来做到这一点
I do know of filter
and sort
functions. I also know how to use didSet
such that I could do this
var doctors:[Doctor] = [] {
didSet {
// do something if `doctors` was changed
}
}
推荐答案
Simply, by letting doctors
array to be as 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数组已被修改!")
).
Note that each of adding, editing or deleting operations affects doctors
array calls the didSet
code (print("doctros array has been modifed!")
).
这篇关于我如何知道数组中元素的值是否已更改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!