2011-04-26 2 views
3

selectionIndex J'utilise KVO pour obtenir la notification des changements à selectionIndexdictionnaire Changement de KVO contient toujours NULL pour

[contoller addObserver:self forKeyPath:@"selectionIndex" options:NSKeyValueObservingOptionNew context:NULL]; 

de NSArrayController et quand je mets la sélection à l'aide setSelectedObjects: j'averti de selectionIndex changer que je pense . Toutefois, lorsque j'essaie d'obtenir NSKeyValueChangeNewKey à partir du dictionnaire de modification, il renvoie toujours NULL.

Impression des spectacles dictionnaire:

{ type = 1; nouveau = ""; }

Est-ce parce que la valeur de selectionIndex est un NSUInteger et ne peut pas être mis dans un dictionnaire ou que je fais quelque chose de mal?

Ce n'est pas un problème pour moi car je peux obtenir le selectionIndex du contrôleur par d'autres moyens lorsque je reçois cette notification, je voudrais juste savoir pourquoi il ne fait pas ce que je m'attendais.

+0

Je ne pense pas qu'il y ait quoi que ce soit avec todo selectionIndex être un NSUInteger - Je pense qu'il est tout simplement pas pris en charge. Désolé, je ne trouve aucun détail. – hooleyhoop

+0

De manière générale, les notifications KVO pour les propriétés avec des types scalaires doivent être prises en charge. Si vous attendez un NSUInteger, vous obtiendrez un NSNumber, et pour les structures, vous attendez un NSValue. Je m'attendrais à ce que cela fonctionne, et je suis tout aussi perplexe que ce n'est pas le cas, mais la solution de contournement est assez simple: Traitez le rappel comme une notification sans état et relisez simplement la valeur vous-même. – ipmcc

Répondre

2

Je vois ce comportement sur une version 10.6 de l'application avec Xcode 4.2.1 sur Lion 10.7.3.

La notification se déclenche, mais le dictionnaire de modifications est toujours NULL. Comme vous le dites, une fois que vous avez déclenché la notification, vous pouvez obtenir selectionIndex manuellement, donc pas un problème pour mon application.

J'ai recherché un peu de bug et j'ai trouvé que c'était un bug connu il y a environ 3 ans, alors peut-être que c'est encore le cas?

http://www.cocoabuilder.com/archive/cocoa/231886-problem-observing-selectionindex-of-an-array-controller.html

Questions connexes