Saya sedang menerapkan socket.io di aplikasi ios cepat saya.
Saat ini di beberapa panel saya mendengarkan server dan menunggu pesan masuk. Saya melakukannya dengan memanggil getChatMessagefungsi di setiap panel:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Namun saya perhatikan itu adalah pendekatan yang salah dan saya perlu mengubahnya - sekarang saya ingin mulai mendengarkan pesan masuk hanya sekali dan ketika ada pesan datang - meneruskan pesan ini ke panel mana pun yang mendengarkannya.
Jadi saya ingin meneruskan pesan masuk melalui NSNotificationCenter. Sejauh ini saya dapat menyampaikan informasi bahwa sesuatu telah terjadi, tetapi tidak dapat meneruskan data itu sendiri. Saya melakukannya dengan:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
lalu saya memiliki fungsi yang disebut:
func showSpinningWheel(notification: NSNotification) {
}
dan kapan pun saya ingin menyebutnya, saya melakukan:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Jadi bagaimana saya bisa melewatkan objek messageInfodan memasukkannya ke dalam fungsi yang dipanggil?
yourValuedalam fungsi yang dipanggil pada notifikasi itu (dalam showSpinningWheel)?
.userinfoseperti notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)