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.