我有一个 NSPopUpButton,其内容值绑定到 NSNumber 的 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。
但是,我尝试通过 Interface Builder 和编程方式使用 NSNumberFormatter,但结果没有改变。作为参考,这是我在尝试以编程方式设置 NSPopUpButton 的格式化程序时使用的代码:
tempoFormatter = [[NSNumberFormatter alloc] init];
[tempoFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[tempoFormatter setFormat:@"### bpm"];
[[tempoButton cell] setFormatter:tempoFormatter];
(tempoButton 是一个连接到 NSPopUpButton 的 IBOutlet)
我想知道使用 NSNumberFormatter 是否是我所需要的?如果是这样,我做错了什么?我已通读 Data Formatting Programming Guide;这看起来很简单,但我觉得我错过了一些东西。
提前致谢。