我正在使用Cocoa绑定来管理对象表。我理解绑定是如何工作的,但我遇到了一个小问题。管理对象表会很好,但是这些对象必须管理实际的蓝牙硬件。我正在使用一个框架,该框架提供了一个表示与此硬件连接的类,并使另一个“管理器”类使其符合键值。换句话说,此管理器类必须能够在其属性字典中连接和修改其“连接”状态,作为此硬件的委托并修改属性,并使用所做的更改来更新硬件。
但是,每当我在对象本身中设置新值时,就像在“connect”方法中将“connect”键的值更改为2(look)(即propertiesDict = newDict
)一样,更改不是似乎被观察者认为是必然的。我查看了observeValueForKeyPath:ofObject:change:context:
中的NSKeyValueObservingProtocol
。但是,我不知道如何处理context参数。
我希望这是有道理的......但如果有人有任何想法,我很乐意听到它们。
答案 0 :(得分:2)
您的问题并不完全清楚,但如果我理解正确,问题可能是因为您需要在更改嵌入对象中的值之前和之后发送手动KVO通知。例如,[self willChangeValueForKey:@"connected"];
和[self didChangeValueForKey:@"connected"];
。
答案 1 :(得分:0)
以KVO兼容的方式更新属性/属性有三种方法:
@property
声明中指定或由@synthesize
生成)-willChangeValueForKey:
和-didChangeValueForKey:
。-setValueForKey: