J'implémente socket.io
dans mon application iOS rapide.
Actuellement sur plusieurs panneaux, j'écoute le serveur et j'attends les messages entrants. Je le fais en appelant la getChatMessage
fonction dans chaque panneau:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Cependant, j'ai remarqué que c'est une mauvaise approche et que je dois la changer - maintenant je veux commencer à écouter les messages entrants une seule fois et quand un message arrive - transmettez ce message à n'importe quel panneau qui l'écoute.
Je veux donc faire passer le message entrant via NSNotificationCenter. Jusqu'à présent, j'ai pu transmettre les informations indiquant que quelque chose s'était passé, mais pas les données elles-mêmes. Je faisais cela en:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
puis j'ai eu une fonction appelée:
func showSpinningWheel(notification: NSNotification) {
}
et chaque fois que je voulais l'appeler, je faisais:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Alors, comment puis-je passer l'objet messageInfo
et l'inclure dans la fonction qui est appelée?
yourValue
dans la fonction qui est appelée sur cette notification (in showSpinningWheel
)?
.userinfo
comme notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)