मैं socket.ioअपने स्विफ्ट आईओएस ऐप में लागू कर रहा हूं ।
वर्तमान में कई पैनलों पर मैं सर्वर को सुन रहा हूं और आने वाले संदेशों की प्रतीक्षा कर रहा हूं। मैं 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
})
}
}
हालाँकि, मैंने देखा कि यह एक गलत दृष्टिकोण है और मुझे इसे बदलने की आवश्यकता है - अब मैं केवल एक बार आने वाले संदेशों को सुनना शुरू करना चाहता हूं और जब कोई संदेश आता है - इस संदेश को किसी भी पैनल को पास करें जो इसे सुनता है।
इसलिए मैं NSNotificationCenter के माध्यम से आने वाले संदेश को पारित करना चाहता हूं। अब तक मैं इस जानकारी को पारित करने में सक्षम था कि कुछ हुआ है, लेकिन डेटा को स्वयं पारित नहीं किया। मैं यह कर रहा था:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
तब मेरे पास एक फंक्शन था:
func showSpinningWheel(notification: NSNotification) {
}
और किसी भी समय मैं इसे कॉल करना चाहता था जो मैं कर रहा था:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
तो मैं ऑब्जेक्ट को कैसे पास कर सकता हूं messageInfoऔर इसे उस फ़ंक्शन में शामिल कर सकता हूं जिसे कहा जाता है?
yourValueउस फ़ंक्शन में कैसे ला सकता हूं जिसे उस अधिसूचना ( showSpinningWheel) में कहा जाता है ?
.userinfoजैसे उपयोग करनाnotification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)