观察结构数组的变化

时间:2017-10-12 19:24:10

标签: swift

如何观察结构数组的添加/删除?

如果它是一个类数组,你可以使数组动态化并使用KVO。 对于结构,您在iOS 11中遇到了@objc或@objcMembers的问题

2 个答案:

答案 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()