我有一个NSPopUpButton其内容值绑定到NSNumbers的一个NSArray。该NSPopUpButton正确显示在它的弹出菜单号的数组。然而,当我改变所选择的值时,收到一个消息:

HIToolbox: ignoring exception 'Unacceptable type of value for attribute: property = "tempo"; desired type = NSNumber; given type = NSCFString; value = 106.' that raised inside Carbon event dispatch

显然,这是存在的,因为到所选择的值绑定到的对象来期待一个NSNumber,并且NSPopUpButton是给它一个NSString。综观其他职位,我想我需要的是一个NSNumberFormatter。

然而,我使用NSNumberFormatter,均通过界面生成器尝试了编程,但结果并不改变。作为参考,这是在尝试将NSPopUpButton的格式化器编程时我所使用的代码:

tempoFormatter = [[NSNumberFormatter alloc] init];
[tempoFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[tempoFormatter setFormat:@"### bpm"];

[[tempoButton cell] setFormatter:tempoFormatter];

(tempoButton是连接到NSPopUpButton一个IBOutlet)

我如果使用NSNumberFormatter疑惑甚至我需要什么?如果是这样,我在做什么错?我已经通过数据格式编程指南阅读;似乎很直接,但我觉得我失去了一些东西。

预先感谢。

有帮助吗?

解决方案

这要看你用得到NSPopupButton的选定值绑定。

如果你绑定到“选定值”,你会得到一个的NSString。

如果你绑定到“选定的对象”,您将获得由对象的选择,而你的情况将是一个NSNumber表示。

否则,您将添加一个NSValueTransformer到你绑定到选定的值转换成你希望的对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top