我正在寻找一种方法来在字典值发生变化时运行一些代码。我对Swift来说还是个新手,但这是我到目前为止所做的:
var objects: NSMutableDictionary {
didChange(changeKind: keyValue, valuesAtIndexes: indexes, forKey: something){
}
}
然而,这给了我一个编译错误(使用未解析的标识符),无论我做什么,我似乎无法使它工作。有什么想法吗?
答案 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)
}
}