【发布时间】:2017-04-28 08:31:18
【问题描述】:
使用的语言: 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(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数组的值和以前不一样了?
我知道filter 和sort 函数。我也知道如何使用didSet 这样我就可以做到这一点
var doctors:[Doctor] = [] {
didSet {
// do something if `doctors` was changed
}
}
【问题讨论】:
-
您能做的最简单的事情就是不允许出现这种情况。将名称设为常量 (
let) 或将Doctor设为struct。不可变的概念非常强大,它大大简化了设计。 -
但是我需要观察数组内部的变化。
标签: arrays swift valuechangelistener