Code Monkey home page Code Monkey logo

notifier's Introduction

Notifier

More easier to use NotificationCenter.

No need to define Notification Name string, no worries about typo

Before:

NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: NSNotification.Name(rawValue: "UserLogin"), object: nil)

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "UserLogin"), object: true, userInfo: ["Name": "xxxx"])

override func handleNotification(_ notification: Notification) {
   let success = notification.object as? Bool ?? false
   let name = notification.userInfo?["name"] as? String ?? ""  //!!!should be 'Name', not 'name'
   ...
}

Emm...

Now

Define the Notification Name as you like

public enum NotifierName: String {
    case login
    case logout
    case registration = "NotificationKeyRegistration"
    ...
}

Define the Notification user info key if you need to pass some values

public enum NotifierKey: String {
    case result
    case name
    ...
}

Register

Notifier.register(.login, to: self, selector: #selector(handleNotification(_:)))

Support Notification.Name:

Notifier.register(.UIKeyboardWillShow, to: self, selector: #selector(handleKeyboardWillShow(_:)))

Remove

Notifier.unregister(.login, from: self)

Post with values

Notifier.post(.login, value: [.result: true, .name: "god"])

Handle

let success: Bool = notification.value(for: .result) ?? false
let name: String = notification.value(for: .name) ?? ""
print("notification: \(success) ---- \(name)")

notifier's People

Contributors

songhailiang avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.