Ich implementiere socket.io
in meiner schnellen iOS-App.
Derzeit höre ich auf mehreren Panels den Server und warte auf eingehende Nachrichten. Ich rufe dazu die getChatMessage
Funktion in jedem Panel auf:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Ich habe jedoch festgestellt, dass dies ein falscher Ansatz ist, und ich muss ihn ändern. Jetzt möchte ich nur noch einmal auf eingehende Nachrichten warten und diese Nachricht an jedes Panel weiterleiten, das sie abhört.
Daher möchte ich die eingehende Nachricht über das NSNotificationCenter weiterleiten. Bisher konnte ich die Information weitergeben, dass etwas passiert ist, aber nicht die Daten selbst weitergeben. Ich habe das gemacht von:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
dann hatte ich eine Funktion namens:
func showSpinningWheel(notification: NSNotification) {
}
und jedes Mal, wenn ich es nennen wollte, tat ich:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Wie kann ich das Objekt übergeben messageInfo
und in die aufgerufene Funktion aufnehmen?
yourValue
in der Funktion abrufen, die bei dieser Benachrichtigung (in showSpinningWheel
) aufgerufen wird ?
.userinfo
like notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)