Wdrażam aplikację socket.io
w mojej szybkiej aplikacji ios.Jak przekazywać dane za pomocą NotificationCentre w swift 3.0 i NSNotificationCenter w swift 2.0?
Obecnie na kilku panelach słucham serwera i czekam na wiadomości przychodzące. Robię to poprzez wywołanie funkcji w każdym panelu 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
})
}
}
Jednak zauważyłem, że jest to złe podejście i muszę go zmienić - teraz chcę zacząć słuchać wiadomości przychodzących tylko raz, kiedy każdą wiadomość przychodzi - przekazuje tę wiadomość do dowolnego panelu, który ją odsłuchuje.
Więc chcę przekazać wiadomość przychodzącą za pośrednictwem NSNotificationCenter. Do tej pory udało mi się przekazać informację, że coś się stało, ale nie przekazać samych danych. Robiłem to przez:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
Wtedy miałem funkcję o nazwie:
func showSpinningWheel(notification: NSNotification) {
}
i wszelkie razem chciałem nazwać to robiłem:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
więc jak mogę przekazać obiekt messageInfo
i dołączyć go do funkcji, która zostanie wywołana?
użyj metody z userinfo ... 'NSNotificationCenter.defaultCenter(). PostNotificationName (" hideSpinner ", object: nil, userInfo: yourvalue)' –
hm ok, i jak mogę pobrać tę 'twoją wartość' w funkcji, która zostanie wywołany w tym powiadomieniu (w 'showSpinningWheel')? – user3766930
przy użyciu '.userinfo' jak' notification.userinfo' –