Arrays 如何知道数组中元素的值是否已更改?
使用的语言:Swift 2.3 例如,我有一个名为Arrays 如何知道数组中元素的值是否已更改?,arrays,swift,valuechangelistener,Arrays,Swift,Valuechangelistener,使用的语言:Swift 2.3 例如,我有一个名为Doctor class Doctor { var name = "" var number = 123 init(name:String, number:String) { self.name = name self.number = number } } 在另一节课上,我把它做成了一个数组 class SomeClass { var doctors:[Doctor]
Doctor
class Doctor {
var name = ""
var number = 123
init(name:String, number:String) {
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)
]
}
然后出于某种原因,我决定更改index
#2的值
我如何知道doctors
数组的值与以前不同
我确实知道过滤器
和排序
功能。我还知道如何使用didSet,这样我就可以做到这一点
var doctors:[Doctor] = [] {
didSet {
// do something if `doctors` was changed
}
}
简单地说,让
医生
数组如下:
请注意,每个添加、编辑或删除操作都会影响
医生
数组调用didSet
代码(print(“doctros数组已修改!”)
)。只需将医生
数组设置为:
请注意,每个添加、编辑或删除操作都会影响
doctors
数组调用didSet
代码(print(“doctros数组已被修改!”)
)。但是,如果只更改了doctors[0]中的一个属性,是否会触发该操作?我知道,如果我向doctors[0]附加一个值,就会触发didSet@如果你添加了一个新的医生或者修改了一个现有的医生,那么应该叫ZonilyJame didSet。这似乎是一种方法。如果我想修改一个对象,我只需在所述索引处删除它,然后在所述索引处插入。工作,但不是我想象的工作方式haha@ZonilyJame您可能还需要检查及其答案,以便观察数组中的特定元素。但是,如果仅更改了医生[0]内的属性,是否会触发此操作?我知道,如果我向医生[0]附加一个值,则会触发didSet@如果你添加了一个新的医生或者修改了一个现有的医生,那么应该叫ZonilyJame didSet。这似乎是一种方法。如果我想修改一个对象,我只需在所述索引处删除它,然后在所述索引处插入。工作,但不是我想象的工作方式haha@ZonilyJame您可能还需要检查和他们的答案,以便观察数组中的特定元素。您可以做的最简单的事情是不允许出现这种情况。将名称设置为常量(let
)或将Doctor
设置为struct
。不可变的概念非常强大,它大大简化了设计。但我需要观察阵列内部的变化。您可以做的最简单的事情就是不允许出现这种情况。将名称设置为常量(let
)或将Doctor
设置为struct
。不可变的概念非常强大,它大大简化了设计。但我需要观察阵列内部的变化。
var doctors:[Doctor] = [] {
didSet {
// do something if `doctors` was changed
}
}
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!"