NoticeObserveKit alternatives and similar libraries
Based on the "EventBus" category.
Alternatively, view NoticeObserveKit alternatives based on common mentions on social networks and blogs.
-
Bolts
Bolts is a collection of low-level libraries designed to make developing mobile apps easier. -
promises
Promises is a modern framework that provides a synchronization construct for Swift and Objective-C. -
BrightFutures
Write great asynchronous code in Swift using futures and promises -
SwiftTask
Promise + progress + pause + cancel + retry for Swift. -
Hydra
⚡️ Lightweight full-featured Promises, Async & Await Library in Swift -
Bolts-Swift
Bolts is a collection of low-level libraries designed to make developing mobile apps easier. -
SwiftEventBus
A publish/subscribe EventBus optimized for iOS -
FutureKit
A Swift based Future/Promises Library for IOS and OS X. -
Promise
A Promise library for Swift, based partially on Javascript's A+ spec -
SwiftNotificationCenter
A Protocol-Oriented NotificationCenter which is type safe, thread safe and with memory safety -
When
:alarm_clock: A lightweight implementation of Promises in Swift -
RWPromiseKit
A light-weighted Promise library for Objective-C -
Promis
The easiest Future and Promises framework in Swift. No magic. No boilerplate. -
Continuum
NotificationCenter based Lightweight UI / AnyObject binder. -
TopicEventBus
Publish–subscribe design pattern implementation framework, with an ability to publish events by topic. -
Futures
Lightweight promises for iOS, macOS, tvOS, watchOS, and Linux -
FutureLib
FutureLib is a pure Swift 2 library implementing Futures & Promises inspired by Scala. -
Bluebird.swift
Promise/A+, Bluebird inspired, implementation in Swift 5
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of NoticeObserveKit or a related project?
README
NoticeObserveKit
NoticeObserveKit is type-safe NotificationCenter wrapper.
// .keyboardWillShow is a static property.
Notice.Center.default.observe(name: .keyboardWillShow) { keyboardInfo in
// In this case, keyboardInfo is UIKeyboardInfo type.
// It is inferred from a generic parameter of Notice.Name<Value>.
print(keyboardInfo)
}
// pool is Notice.ObserverPool.
// If pool is released, Notice.Observes are automatically removed.
.invalidated(by: pool)
Usage
First of all, you need to implement Notice.Name<T>
like this.
T
is type of value in notification.userInfo.
extension Notice.Names {
static let keyboardWillShow = Notice.Name<UIKeyboardInfo>(UIResponder.keyboardWillShowNotification)
}
If you define custom object, you need to implement that with NoticeUserInfoDecodable
protocol. To confirm this protocol, you must implement init?(info: [AnyHashable : Any])
and func dictionaryRepresentation() -> [AnyHashable : Any]
.
struct UIKeyboardInfo: NoticeUserInfoDecodable {
let frame: CGRect
let animationDuration: TimeInterval
let animationCurve: UIViewAnimationOptions
init?(info: [AnyHashable : Any]) {
guard
let frame = (info[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue,
let duration = info[UIKeyboardAnimationDurationUserInfoKey] as? TimeInterval,
let curve = info[UIKeyboardAnimationCurveUserInfoKey] as? UInt
else {
return nil
}
self.frame = frame
self.animationDuration = duration
self.animationCurve = UIViewAnimationOptions(rawValue: curve)
}
}
Usage for under v0.4.0 is [documents/v0_4_0](./documents/v0_4_0.md).
Customization
If you can post custom Notification like this.
extension Notice.Names {
static let navigationControllerDidShow = Notice.Name<NavigationControllerContent>(name: "navigationControllerDidShow")
}
let content = NavigationControllerContent(viewController: viewController, animated: animated)
Notice.Center.default.post(name: .navigationControllerDidShow, value: content)
You can invalidate manually like this.
let observer = Notice.Center.default.observe(name: .keyboardWillShow) { keyboardInfo in
print(keyboardInfo)
}
observer.invalidate()
You can use vi NotificationCenter.
NotificationCenter.default.nok.observe(name: .keyboardWillShow) { keyboardInfo in
print(keyboardInfo)
}
.invalidated(by: pool)
Sample
import UIKit
import NoticeObserveKit
class ViewController: UIViewController {
private let searchBar = UISearchBar(frame: .zero)
private var pool = Notice.ObserverPool()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
navigationItem.titleView = searchBar
configureObservers()
}
private func configureObservers() {
Notice.Center.default.observe(name: .keyboardWillShow) {
print("UIKeyboard will show = \($0)")
}.invalidated(by: pool)
Notice.Center.default.observe(name: .keyboardWillHide) {
print("UIKeyboard will hide = \($0)")
}.invalidated(by: pool)
}
}
Requirements
- Swift 5
- Xcode 10.2 or greater
- iOS 10.0 or greater
- tvOS 10.0 or greater
- macOS 10.10 or greater
- watchOS 3.0 or greater
Installation
CocoaPods
NoticeObserveKit is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "NoticeObserveKit"
Carthage
If you’re using Carthage, simply add
NoticeObserveKit to your Cartfile
:
github "marty-suzuki/NoticeObserveKit"
Make sure to add NoticeObserveKit.framework
to "Linked Frameworks and Libraries" and "copy-frameworks" Build Phases.
Author
marty-suzuki, [email protected]
License
NoticeObserveKit is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the NoticeObserveKit README section above
are relevant to that project's source code only.