【发布时间】:2011-06-19 21:15:55
【问题描述】:
为了开始使用绑定,我正在编写一个小型应用程序,它将摄氏度的温度转换为开尔文的温度,反之亦然。
我有两个 NSTextFields,它们绑定到两个属性,称为 float kelvin 和 float centigrade。而且,当然,我有两个自定义设置器,它们为每个属性设置适当的值。
摄氏度的设置器是:
centigrade = value;
[self willChangeValueForKey:@"kelvin"];
kelvin = value + 273;
[self didChangeValueForKey:@"kelvin"];
我需要使用willChangeValueForKey:,否则其他 NSTextField 中的值不会更新。
我的问题是,有没有更优雅的方法来做到这一点?如果我添加另一个属性和文本字段来将温度转换为华氏温度,我还需要在该 getter 中添加 willChange... 和 didChange...。
有没有办法告诉 nib 文件这两个属性是链接的,并且每当其中一个发生更改时,它必须通知两个观察者?
编辑:
为了它的价值,我尝试从 centrigrade 的 setter 内部调用 kelvin 的 setter。但是,如果我在开尔文的二传手也这样做,那不会引起问题吗?例如:
centigrade = value;
[self setKelvin:value];
和
kelvin = value;
[self setCelsius:value];
【问题讨论】:
标签: objective-c cocoa binding cocoa-bindings