Sto implementando socket.io
nella mia app iOS rapida.
Attualmente su più pannelli sto ascoltando il server e aspetto i messaggi in arrivo. Lo faccio chiamando la getChatMessage
funzione in ogni pannello:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Tuttavia ho notato che è un approccio sbagliato e ho bisogno di cambiarlo - ora voglio iniziare ad ascoltare i messaggi in arrivo solo una volta e quando arriva un messaggio - passa questo messaggio a qualsiasi pannello che lo ascolta.
Quindi voglio passare il messaggio in arrivo tramite NSNotificationCenter. Finora sono stato in grado di trasmettere l'informazione che è successo qualcosa, ma non di trasmettere i dati stessi. Lo stavo facendo:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
poi ho avuto una funzione chiamata:
func showSpinningWheel(notification: NSNotification) {
}
e ogni volta che volevo chiamarlo stavo facendo:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Quindi come posso passare l'oggetto messageInfo
e includerlo nella funzione che viene chiamata?
yourValue
nella funzione che viene chiamata su quella notifica (in showSpinningWheel
)?
.userinfo
come notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)