Pregunta

Tengo un NSPopUpButton cuyos valores contenido son unido a un NSArray de NSNumbers. El NSPopUpButton muestra correctamente el conjunto de números en ella de campo desplegable. Sin embargo, cuando cambio el valor seleccionado, recibo un mensaje:

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

Obviamente, esto está ocurriendo porque el objeto al que está enlazado el valor seleccionado a espera un NSNumber, y la NSPopUpButton está dando un NSString. Mirando a través de otros mensajes, creo que lo que necesito es un NSNumberFormatter.

Sin embargo, he intentado usar un NSNumberFormatter, tanto a través de Interface Builder, y programáticamente, pero el resultado no cambia. Para referencia, este es el código que he utilizado cuando se trata de establecer el formateador de la NSPopUpButton programáticamente:

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

[[tempoButton cell] setFormatter:tempoFormatter];

(tempoButton es un IBOutlet conectado a la NSPopUpButton)

Me pregunto si se utiliza un NSNumberFormatter es aún lo que necesito? Si es así, ¿qué estoy haciendo mal? He leído a través de la Guía de programación de formato de datos; parece muy sencillo, pero siento que me falta algo.

Gracias de antemano.

¿Fue útil?

Solución

Depende de la unión que está utilizando para obtener el valor seleccionado de NSPopupButton.

Si va a unirse a "valor seleccionado", que obtendrá un NSString.

Si va a unirse a "objeto seleccionado", obtendrá el objeto representado por la selección, que en su caso sería un NSNumber.

De lo contrario, deberá añadir un NSValueTransformer a su unión a transformar el valor seleccionado en el objeto que está esperando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top