Ich implementiere socket.ioin meiner schnellen iOS-App.
Derzeit höre ich auf mehreren Panels den Server und warte auf eingehende Nachrichten. Ich rufe dazu die getChatMessageFunktion 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 messageInfound in die aufgerufene Funktion aufnehmen?
yourValuein der Funktion abrufen, die bei dieser Benachrichtigung (in showSpinningWheel) aufgerufen wird ?
.userinfolike notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)