Tôi đang triển khai socket.io
trong ứng dụng iOS nhanh chóng của mình.
Hiện tại trên một số bảng, tôi đang nghe máy chủ và chờ tin nhắn đến. Tôi đang làm như vậy bằng cách gọi getChatMessage
hàm trong mỗi bảng:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Tuy nhiên, tôi nhận thấy đó là một cách tiếp cận sai và tôi cần phải thay đổi nó - bây giờ tôi muốn bắt đầu nghe tin nhắn đến chỉ một lần và khi bất kỳ tin nhắn nào đến - hãy chuyển thông báo này đến bất kỳ bảng điều khiển nào lắng nghe nó.
Vì vậy, tôi muốn chuyển tin nhắn đến qua NSNotificationCenter. Cho đến nay, tôi đã có thể chuyển thông tin rằng điều gì đó đã xảy ra, nhưng không thể truyền dữ liệu của chính nó. Tôi đã làm điều đó bằng cách:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
thì tôi đã có một hàm được gọi là:
func showSpinningWheel(notification: NSNotification) {
}
và bất cứ lúc nào tôi muốn gọi nó là tôi đã làm:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Vì vậy, làm thế nào tôi có thể truyền đối tượng messageInfo
và bao gồm nó trong hàm được gọi?
yourValue
trong hàm được gọi trên thông báo đó (trong showSpinningWheel
)?
.userinfo
like notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)