Latest 2.2.0
Homepage https://github.com/MerrickSapsford/Listenable
License MIT
Platforms ios 9.0, requires ARC
Authors

Build Status
Swift 4
[CocoaPods]()
Carthage compatible
codecov
GitHub release

Swift object that provides an observable platform for multiple listeners.

Requirements

  • iOS 9.0+
  • Xcode 9.x+
  • Swift 4

Installation

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

    pod 'Listenable'

And run pod install.

Usage

Create a Listenable object either by inheriting or initializing a Listenable typed with a protocol:

    class ListenableObject: Listenable<ListenableDelegate> {
      // Class
    }

You can then add and remove listeners, and update them as required…

Add Listener(s):

    add(listener: Listener, priority: ListenerPriority) -> Bool
    add(listeners: [Listener], priority: ListenerPriority) -> Void

Remove Listener(s):

    remove(listener: Listener) -> Bool
    remove(listeners: [Listener]) -> Void
    removeAllListeners()

Enumerate & Update Listeners:

    updateListeners(update: (listener: Listener, index: Int) -> Void)

Prioritisation

ListenerPriority allows for definition of enumeration priority for a listener; by default the priority parameter is set to .low. The following values can be assigned:

    .low        (Raw: 0)
    .high       (Raw: 1000)
    .custom     (Valid range: 0-1000)

Listeners can also be updated exclusively relative to their priority:

    updateListeners(withPriority: ListenerPriority?, 
                          update: (listener: Listener, index: Int) -> Void)

    updateListeners(withPriorities: ClosedRange<Int>?, 
                            update: (listener: Listener, index: Int) -> Void)

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/MerrickSapsford/Listenable.

License

The library is available as open source under the terms of the MIT License.

Latest podspec

{
    "name": "Listenable",
    "platforms": {
        "ios": "9.0"
    },
    "requires_arc": true,
    "version": "2.2.0",
    "summary": "Swift Observable object",
    "description": "Swift object that provides an observable platform for multiple listeners.",
    "homepage": "https://github.com/MerrickSapsford/Listenable",
    "license": "MIT",
    "authors": {
        "Merrick Sapsford": "[email protected]"
    },
    "social_media_url": "http://twitter.com/MerrickSapsford",
    "source": {
        "git": "https://github.com/MerrickSapsford/Listenable.git",
        "tag": "2.2.0"
    },
    "source_files": "Sources/Listenable/**/*.{h,m,swift}"
}

Pin It on Pinterest

Share This