Question

I ai un NSPopUpButton dont les valeurs de contenu sont liées à une NSArray de NSNumbers. Le NSPopUpButton affiche correctement le tableau de nombres dans son menu contextuel. Cependant, quand je change la valeur sélectionnée, je reçois un message:

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

De toute évidence, cela se produit parce que l'objet auquel la valeur sélectionnée est liée à attend un NSNumber, et le NSPopUpButton est lui donnant une NSString. En regardant à travers d'autres postes, je pense que ce que je dois un NSNumberFormatter.

Cependant, j'ai essayé d'utiliser un NSNumberFormatter, à la fois par Interface Builder et programatically, mais le résultat ne change pas. Pour référence, voici le code que je l'ai utilisé lors d'une tentative de régler le formatter du NSPopUpButton programatically:

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

[[tempoButton cell] setFormatter:tempoFormatter];

(tempoButton est un IBOutlet relié à la NSPopUpButton)

Je me demande si vous utilisez un NSNumberFormatter est même ce que je dois? Si oui, qu'est-ce que je fais mal? J'ai lu dans le guide de programmation en forme des données; il semble très droite en avant, mais je me sens comme je manque quelque chose.

Merci d'avance.

Était-ce utile?

La solution

Cela dépend de la liaison que vous utilisez pour obtenir la valeur sélectionnée de NSPopupButton.

Si vous lier à « valeur sélectionnée », vous obtiendrez un NSString.

Si vous lier à « objet sélectionné », vous serez l'objet représenté par la sélection, ce qui dans votre cas serait un NSNumber.

Dans le cas contraire, vous devez ajouter un NSValueTransformer à votre fixation pour transformer la valeur sélectionnée dans l'objet que vous vous attendez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top