如何观察结构数组的添加/删除?
如果它是一个类数组,你可以使数组动态化并使用KVO。 对于结构,您在iOS 11中遇到了@objc或@objcMembers的问题
答案 0 :(得分:1)
你控制阵列的定义吗?如果是这样,您可以添加didSet
观察者:
var array: [MyStruct] {
didSet {
// do something with array and/or oldValue
}
}
每次数组或其中一个元素发生变异时都会调用它。
答案 1 :(得分:0)
Ole是对的。 FWIW这是我测试它的方式
struct MyStruct : CustomStringConvertible {
var thing = "thing"
init(_ s:String) {
print("struct \(#function)")
thing = s
}
var description:String {
get {
return "\(thing)"
}
}
}
class Foo {
var a:[MyStruct] {
didSet {
print("didSet: a was set \(a)")
}
}
init() {
print("class \(#function)")
a = [MyStruct("from Init")]
}
func blammo() {
print("\(#function)")
print("adding")
a.append(MyStruct("Added"))
print("new a \(a)")
}
}
let foo = Foo()
foo.blammo()