Latest 2.0
Homepage https://github.com/mishimay/EventHub
License MIT
Platforms ios 8.0, requires ARC
Authors

Type-safe and handy observation system in Swift.

Quick Example

struct MessageEvent: EventType {
    let message: String
}

EventHub.addObserver(self) { (event: MessageEvent) in
    print(event.message) // -> 😜
}
EventHub.post(MessageEvent(message: "😜"))

Usage

  1. Define events which adopt EventType protocol
    The event can be a class, structure, or enumeration.

    enum LoginEvent: EventType {
      case success(id: String)
      case failure(error: ErrorType)
    }
  2. Add observers and blocks
    Call addObserver(observer:thread:block:).

    • observer: An observer object. If the observer object is destroyed, the observation will be removed automatically and the block will never be called.
    • thread: Optional (default is nil). It determines that which thread executes the block. If it’s nil, the block is run synchronously on the posting thread.
    • block: A callback closure. The block receives the defined event.
    EventHub.addObserver(self, thread: .Main) { (event: LoginEvent) in
      switch event {
      case .success(let id):
          print(id)
      case .failure(let error):
          print(error)
      }
    }
  3. Post events
    EventHub.post(LoginEvent.success(id: id))

Requirements

Swift 3.0

Installation

EventHub is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod "EventHub"

Author

Yuki Mishima, [email protected]

License

EventHub is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "EventHub",
    "version": "2.0",
    "summary": "Type-safe and handy observation system in Swift. It's like NSNotificationCenter or EventBus(Android).",
    "homepage": "https://github.com/mishimay/EventHub",
    "license": "MIT",
    "authors": {
        "Yuki Mishima": "[email protected]"
    },
    "source": {
        "git": "https://github.com/mishimay/EventHub.git",
        "tag": "2.0"
    },
    "platforms": {
        "ios": "8.0"
    },
    "requires_arc": true,
    "source_files": "Pod/Classes/**/*"
}

Pin It on Pinterest

Share This