Как передать данные с помощью NotificationCenter в Swift 3.0 и NSNotificationCenter в Swift 2.0?
Я реализую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
и включить его в функцию, которая вызывается?