Estoy implementando socket.io
en mi aplicación ios rápida.
Actualmente en varios paneles estoy escuchando el servidor y espero mensajes entrantes. Lo hago llamando a la getChatMessage
función en cada panel:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Sin embargo, noté que es un enfoque incorrecto y necesito cambiarlo; ahora quiero comenzar a escuchar los mensajes entrantes solo una vez y cuando llegue cualquier mensaje, pase este mensaje a cualquier panel que lo escuche.
Así que quiero pasar el mensaje entrante a través del NSNotificationCenter. Hasta ahora pude pasar la información de que sucedió algo, pero no pasar los datos en sí. Estaba haciendo eso por:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
entonces tuve una función llamada:
func showSpinningWheel(notification: NSNotification) {
}
y cada vez que quería llamarlo estaba haciendo:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Entonces, ¿cómo puedo pasar el objeto messageInfo
e incluirlo en la función que se llama?
yourValue
en la función que se llama en esa notificación (en showSpinningWheel
)?
.userinfo
like notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)