如何使用NSNotificationCenter传递字符串?

时间:2015-11-05 17:38:15

标签: ios swift nsnotificationcenter

的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中我必须做什么来接收它。

谢谢

3 个答案:

答案 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"]