Я реализую socket.io
в моем приложении быстрого ios.Как передавать данные с помощью NotificationCentre в swift 3.0 и NSNotificationCenter в swift 2.0?
В настоящее время на нескольких панелях я слушаю сервер и жду сообщений. Я делаю так, вызвав 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
и включить его в функцию, вызываемую?
использовать метод с userinfo ... 'NSNotificationCenter.defaultCenter(). PostNotificationName (" hideSpinner ", object: nil, userInfo: yourvalue)' –
hm ok и как я могу получить этот 'yourValue' в функции, которая получает уведомление об этом уведомлении (в 'showSpinningWheel')? – user3766930
используя '.userinfo' как' notification.userinfo' –