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 getChatMessage
fungsi 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 messageInfo
dan memasukkannya ke dalam fungsi yang dipanggil?
yourValue
dalam fungsi yang dipanggil pada notifikasi itu (dalam showSpinningWheel
)?
.userinfo
seperti notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)