CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

Listenable 2.2.0

Listenable 2.2.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Mar 2018
SPMSupports SPM

Maintained by Merrick Sapsford.



Listenable

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.