Я реалізую 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
як notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)