accéder à l'objet passé en NSNotification?
J'ai un NSNotification qui est de poster un NSDictionary:
NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
anItemID, @"ItemID",
[NSString stringWithFormat:@"%i",q], @"Quantity",
[NSString stringWithFormat:@"%@",[NSDate date]], @"BackOrderDate",
[NSString stringWithFormat:@"%@", [NSDate date]],@"ModifiedOn",
nil];
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"InventoryUpdate" object:dict]];
Comment puis-je m'abonner à cela et d'obtenir des informations de cette NSDictionary?
dans mon viewDidLoad j'ai:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recieveInventoryUpdate:) name:@"InventoryUpdate" object:nil];
et une méthode dans la classe:
- (void)recieveInventoryUpdate:(NSNotification *)notification {
NSLog(@"%@ updated", [notification userInfo]);
}
qui enregistre une valeur null, bien sûr.
Vous devez vous connecter pour publier un commentaire.
c'est
[notification object]
vous pouvez également envoyer userinfo en utilisant
notificationWithName:object:userInfo:
méthodenotificationWithName:object:userInfo:
est le chemin à parcourir ici.Objet est l'objet affichage de la notification, et non pas un moyen de stocker de l'objet de sorte que vous pouvez obtenir. Les infos de l'utilisateur est l'endroit où vous stockez les informations que vous souhaitez conserver avec la notification.
Puis de l'enregistrer pour la notification. L'objet peut être votre classe, ou nul pour recevoir toutes les notifications de ce nom
Ensuite l'utiliser dans votre sélecteur de
C'est simple, voir ci-dessous
si l'accès à la
notification.userinfo
, il sera de retournull
.Vous le faites mal. Vous devez utiliser:
et passer le dict pour le dernier paramètre. Votre "objet" paramètre est l'objet de l'envoi de la notification et non le dictionnaire.
La
object
à compter de la notification est destiné à être le expéditeur, dans votre cas, le dictionnaire n'est pas réellement le expéditeur, c'est juste de l'information. Toute information auxiliaire être envoyé en même temps que la notification est destiné à être passés avec leuserInfo
dictionnaire. Envoyer la notification en tant que tel:Et de le recevoir comme cela, pour obtenir le comportement que vous avez l'intention dans le bon sens:
Swift:
Plus simple est
Il a travaillé pour moi.