我有一个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是否是我所需要的?如果是这样,我做错了什么?我已经通读了数据格式化编程指南;它看起来非常简单,但我觉得我遗漏了一些东西。
提前谢谢。
发布于 2010-01-11 04:10:52
这取决于您使用哪个绑定来获取NSPopupButton的选定值。
如果你绑定到"Selected Value",你会得到一个NSString。
如果您绑定到"Selected Object",您将获得由selection表示的对象,在本例中是一个NSNumber。
否则,您将在绑定中添加一个NSValueTransformer,以将选定的值转换为您期望的对象。
https://stackoverflow.com/questions/2038235
复制相似问题