J'essaie de passer un NSDictionary à partir d'un UIView à un UIViewController en utilisant NSNotificationCenter. Le dictionnaire fonctionne correctement au moment de la publication de la notification, mais dans la méthode de réception, je ne peux accéder à aucun des objets du dictionnaire.Comment passer un NSDictionary avec postNotificationName: objet:
Voici comment je crée le dictionnaire et l'affichage de la notification ...
itemDetails = [[NSDictionary alloc] initWithObjectsAndKeys:@"Topic 1", @"HelpTopic", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"HotSpotTouched" object:itemDetails];
Dans le UIViewController je suis en train de l'observateur ...
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(hotSpotMore:)
name:@"HotSpotTouched"
object:nil];
Pour des fins de test hotSpotMore ressemble ce ...
- (void)hotSpotMore:(NSDictionary *)itemDetails{
NSLog(@"%@", itemDetails);
NSLog(@"%@", [itemDetails objectForKey:@"HelpTopic"]);
}
Le premier NSLog fonctionne bien afficher le contenu de e dictionnaire. Le deuxième journal jette l'exception suivante ...
[NSConcreteNotification objectForKey:]: unrecognized selector sent to instance 0x712b130
Je ne comprends pas pourquoi je ne peux pas accéder à tous les objets dans le dictionnaire passé.
Merci d'avance pour toute aide.
John
Great !! Merci ça a marché. Je vois que je n'ai pas lu assez attentivement les sujets de programmation de notification. – user278859
+1 pour le programme devenant sensible et essayant de vous tromper :) –
Ancien poste, mais toujours très précieux. Merci pour cela! Juste une petite note: userInfo: prendra un NSDictionary. Si vous essayez de passer un objet différent, vous devrez l'insérer dans un dictionnaire. – Alex