gpt4 book ai didi

cocoa - NSFormatter 与 NSPopUpButton 一起使用

转载 作者:行者123 更新时间:2023-12-03 17:08:19 24 4
gpt4 key购买 nike

我有一个 NSPopUpButton,其内容值绑定(bind)到 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

显然,发生这种情况是因为所选值绑定(bind)到的对象需要一个 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 是否正是我所需要的?如果是这样,我做错了什么?我已阅读《数据格式化编程指南》;看起来很简单,但我觉得我错过了一些东西。

提前致谢。

最佳答案

这取决于您使用哪个绑定(bind)来获取 NSPopupButton 的选定值。

如果您绑定(bind)到“选定值”,您将获得一个 NSString。

如果您绑定(bind)到“选定的对象”,您将获得由所选内容表示的对象,在您的情况下,该对象将是一个 NSNumber。

否则,您需要将 NSValueTransformer 添加到您的绑定(bind)中,以将所选值转换为您期望的对象。

关于cocoa - NSFormatter 与 NSPopUpButton 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com