当字典值改变时做一些事情

时间:2014-12-23 21:55:15

标签: ios swift event-handling

我正在寻找一种方法来在字典值发生变化时运行一些代码。我对Swift来说还是个新手,但这是我到目前为止所做的:

var objects: NSMutableDictionary {
    didChange(changeKind: keyValue, valuesAtIndexes: indexes, forKey: something){

    }
}

然而,这给了我一个编译错误(使用未解析的标识符),无论我做什么,我似乎无法使它工作。有什么想法吗?

1 个答案:

答案 0 :(得分:6)

您要找的是didSet property observer。用法如下:

var objects: NSMutableDictionary? {
    didSet {
        // stuff
    }
}

请注意,willSet是另一个选项,如果您希望在属性更改之前而不是之后通知。对于willSet,您将获得表示属性传入值的newValue变量,如果是didSet,则表示传出值的oldValue属性

正如@ Paulw11在下面提到的那样,当字典的内容发生变化时,这不会通知你。仅在重新分配变量时。如果您希望在更新字典中的值时通知(AFAIK),则必须使用等效的Swift字典。

var swiftObjects: [NSObject: AnyObject]? {
    didSet {
        println(oldValue)
    }
}