的Class1:
var string = "hello"
NSNotificationCenter.defaultCenter().postNotificationName("notificationA", object: nil)
等级2:
NSNotificationCenter.defaultCenter().addObserver(self,selector: "handle_notification",name: "notificationA",object: nil)
func handle_notification(){
//I would like to get the string here
}
我试图在对象参数中传递字符串(在Class1中),但我不确定在Class2中我必须做什么来接收它。
谢谢
答案 0 :(得分:2)
通知中包含userInfo
字典,您可以在其中传递任何您喜欢的字词。通过调用postNotificationName:object:userInfo:
发布通知时进行此设置。然后通过通知参数将其接收到处理程序:
func handle_notification(n:NSNotification) {
let d = n.userInfo // you take it from here...
}
答案 1 :(得分:2)
在发布通知时,将string
与通知的userInfo
数据一样通过。
要获取设置通知观察者所需的字符串,以便将通知传递给选择器。为此,请将选择器名称更改为"handle_notification:"
。注意添加结肠。现在为NSNotification
方法添加handle_notification
参数。
现在,您可以从userInfo
参数的NSNotification
获取字符串。
BTW - 标准命名约定规定方法名称应使用驼峰大小写,而不是下划线。所以方法应该是handleNotification
。
答案 2 :(得分:2)
// sender notification
let dic = ["myText":"YourText"]
NSNotificationCenter.defaultCenter().postNotificationName("ApplicationEnterForeground",object: nil, userInfo: dic)
// receiver notification
NSNotificationCenter.defaultCenter().addObserver(self, selector: "myMethod:", name: "ApplicationEnterForeground", object: nil)
func myMethod(notification: NSNotification) {
labelNotificationText.text = notification.userInfo!["myText"]