socket.io
Swift ios uygulamamda uyguluyorum .
Şu anda birkaç panelde sunucuyu dinliyorum ve gelen mesajları bekliyorum. Bunu getChatMessage
, her paneldeki işlevi çağırarak yapıyorum :
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Ancak bunun yanlış bir yaklaşım olduğunu fark ettim ve bunu değiştirmem gerekiyor - şimdi gelen mesajları yalnızca bir kez ve herhangi bir mesaj geldiğinde dinlemeye başlamak istiyorum - bu mesajı onu dinleyen herhangi bir panele iletin.
Bu yüzden gelen mesajı NSNotificationCenter aracılığıyla iletmek istiyorum. Şimdiye kadar bir şeyin olduğu bilgisini iletebildim, ancak verinin kendisini aktaramadım. Bunu şu şekilde yapıyordum:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
sonra adında bir işlevim vardı:
func showSpinningWheel(notification: NSNotification) {
}
ve ne zaman aramak istesem, yapıyordum:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Peki nesneyi nasıl geçebilirim messageInfo
ve çağrılan işleve nasıl dahil edebilirim ?
yourValue
bu bildirimde çağrılan işlevde bunu nasıl getirebilirim (içinde showSpinningWheel
)?
.userinfo
benzeri kullanaraknotification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)