Я использую socket.io
свое быстрое приложение для iOS.
Сейчас на нескольких панелях я слушаю сервер и жду входящих сообщений. Я делаю это, вызывая getChatMessage
функцию на каждой панели:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Однако я заметил, что это неправильный подход, и мне нужно его изменить - теперь я хочу начать прослушивать входящие сообщения только один раз, и когда приходит какое-либо сообщение, передайте это сообщение любой панели, которая его слушает.
Итак, я хочу передать входящее сообщение через NSNotificationCenter. Пока я мог передать информацию о том, что что-то произошло, но не передавал сами данные. Я делал это:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
тогда у меня была функция под названием:
func showSpinningWheel(notification: NSNotification) {
}
и всякий раз, когда я хотел это назвать, я делал:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Итак, как я могу передать объект messageInfo
и включить его в вызываемую функцию?
yourValue
в функции, которая вызывается в этом уведомлении (в showSpinningWheel
)?
.userinfo
Like notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)