Swift 2 Version
Как заметил @Johan Karlsson ... Я делал это неправильно.Вот правильный способ отправки и получения информации с NSNotificationCenter.
Сначала мы рассмотрим инициализатор для postNotificationName:
init(name name: String,
object object: AnyObject?,
userInfo userInfo: [NSObject : AnyObject]?)
source
Мы будем передавать нашу информацию, используя параметр userInfo
.Тип [NSObject : AnyObject]
является удержанием от Objective-C .Итак, на земле Swift все, что нам нужно сделать, - это передать в словарь Swift, который имеет ключи, полученные из NSObject
, и значения, которые могут быть AnyObject
.
. С этим знанием мы создаем словарь, которыймы передадим в параметр object
:
var userInfo = [String:String]()
userInfo["UserName"] = "Dan"
userInfo["Something"] = "Could be any object including a custom Type."
Затем передадим словарь в наш параметр объекта.
Отправитель
NSNotificationCenter.defaultCenter()
.postNotificationName("myCustomId", object: nil, userInfo: userInfo)
Класс получателя
Сначала мы должны убедиться, что наш класс наблюдает за уведомлением
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("btnClicked:"), name: "myCustomId", object: nil)
}
Затем мы можем получить наш словарь:
func btnClicked(notification: NSNotification) {
let userInfo : [String:String!] = notification.userInfo as! [String:String!]
let name = userInfo["UserName"]
print(name)
}