Comment passer des données à l'aide de NotificationCenter dans swift 3.0 et NSNotificationCenter dans swift 2.0?

Je suis la mise en œuvre de socket.io dans ma swift application ios.

Actuellement sur plusieurs panneaux, je suis à l'écoute de serveur et d'attendre pour les messages entrants. Je suis en train de faire en appelant la getChatMessage fonction de 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 j'ai besoin de le changer - maintenant, je veux commencer à écouter les messages entrants qu'une seule fois et lorsqu'un message arrive - passer ce message sur un panneau qu'elle l'écoute.

Donc je veux passer le message entrant par le biais de la NSNotificationCenter. Jusqu'à présent, j'ai pu passer l'information que quelque chose s'est passé, mais de ne pas transmettre les données lui-même. Je faisais cela par:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)

ensuite, j'ai eu un appel de fonction:

func showSpinningWheel(notification: NSNotification) {
}

et tout le temps je voulais appeler ce que je faisais:

NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)

Alors, comment puis-je passer de l'objet messageInfo et de l'inclure dans la fonction qui est appelée?

  • utilisez la méthode avec userinfo ... NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)
  • hm ok, et comment puis-je récupérer cette yourValue dans la fonction qui est appelée sur la notification (en showSpinningWheel)?
  • à l'aide de .userinfo comme notification.userinfo
InformationsquelleAutor user3766930 | 2016-04-28