Sto implementando socket.io
nella mia app ios rapida.Come passare i dati utilizzando NotificationCentre in swift 3.0 e NSNotificationCenter in swift 2.0?
Attualmente su più pannelli sto ascoltando il server e aspetto i messaggi in arrivo. Sto facendo in modo chiamando la funzione getChatMessage
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 per i messaggi in entrata solo una volta e quando un messaggio viene - passa questo messaggio a qualsiasi pannello che lo ascolta.
Quindi voglio passare il messaggio in arrivo attraverso NSNotificationCenter. Finora sono stato in grado di passare le informazioni che qualcosa è successo, ma non passare i dati stessi. Stavo facendo che:
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 ho voluto chiamarlo che stavo facendo:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Così come posso passare l'oggetto messageInfo
e includerlo nella funzione che viene chiamata?
utilizzare il metodo con userinfo ... 'NSNotificationCenter.defaultCenter(). PostNotificationName (" hideSpinner ", oggetto: nil, userInfo: yourvalue)' –
hm ok, e come posso recuperare questo 'yourValue' nella funzione che viene chiamato su quella notifica (in 'showSpinningWheel')? – user3766930
usando '.userinfo' come' notification.userinfo' –