Estou implementando socket.io
em meu aplicativo ios swift.
Atualmente em vários painéis estou ouvindo o servidor e aguardando mensagens recebidas. Estou fazendo isso chamando a getChatMessage
função em cada painel:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
No entanto, percebi que é uma abordagem errada e preciso mudá-la - agora quero começar a ouvir as mensagens recebidas apenas uma vez e quando chegar alguma mensagem - passe essa mensagem para qualquer painel que a ouvir.
Portanto, desejo passar a mensagem recebida pelo NSNotificationCenter. Até agora consegui passar a informação de que algo aconteceu, mas não passei os dados em si. Eu estava fazendo isso por:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
então eu tive uma função chamada:
func showSpinningWheel(notification: NSNotification) {
}
e sempre que eu queria ligar, estava fazendo:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Então, como posso passar o objeto messageInfo
e incluí-lo na função que é chamada?
yourValue
na função que é chamada nessa notificação (in showSpinningWheel
)?
.userinfo
como notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)