how to pass multiple values with a notification in swift how to pass multiple values with a notification in swift ios ios

how to pass multiple values with a notification in swift


You could wrap them in an NSArray or a NSDictionary or a custom Object.

Eg:

let mynumber=1;let mytext="mytext";let myDict = [ "number": mynumber, "text":mytext]NSNotificationCenter.defaultCenter().postNotificationName("refresh", object:myDict);func refreshList(notification: NSNotification){    let dict = notification.object as! NSDictionary    let receivednumber = dict["number"]    let receivedString = dict["mytext"]}


Swift 4 or later

Declare a notification name to be used

extension Notification.Name {    static let refresh = Notification.Name("refresh")}

Add an observer for that name in your view controller viewDidLoad method and a selector to get the notification object

NotificationCenter.default.addObserver(self, selector: #selector(refreshList), name: .refresh, object: nil)

@objc func refreshList(_ notification: Notification) {    if let object = notification.object as? [String: Any] {        if let id = object["id"] as? Int {            print(id)        }        if let email = object["email"] as? String {            print(email)        }    }}

Post your notification with your object:

let object: [String: Any] = ["id": 1, "email": "abc@def.com"]NotificationCenter.default.post(name: .refresh, object: object)


You can use the userInfo property of Notification:

NotificationCenter.default.post(name: Notification.Name("refresh"),                                object: nil,                                userInfo: ["number":yourNumber, "string":yourString])

and to retrieve:

func refreshList(notification: Notification){    let receivednumber = notification.userInfo?["number"] as? Int ?? 0    let receivedString = notification.userInfo?["string"] as? String ?? ""}