Perform alternatives and similar libraries
Based on the "Injection" category.
Alternatively, view Perform alternatives based on common mentions on social networks and blogs.
-
Typhoon
Powerful dependency injection for Objective-C ✨✨ (https://PILGRIM.PH is the pure Swift successor to Typhoon!!)✨✨ -
Dip
Simple Swift Dependency container. Use protocols to resolve your dependencies and avoid singletons / sharedInstances! -
Kraken
Simple Dependency Injection container for Swift. Use protocols to resolve dependencies with easy-to-use syntax!
CodeRabbit: AI Code Reviews for Developers
* 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 Perform or a related project?
Popular Comparisons
README
Perform
Easy dependency injection for storyboard segues.
import Perform
// ...
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: NSIndexPath) {
let task = taskList[indexPath.row]
perform(.showTaskDetails) { taskVC in
taskVC.task = task
}
}
Usage
Configure your segues:
// Sources/Extensions/Segue.swift
import Perform
extension Segue {
static var showTaskDetails: Segue<TaskDetailsViewController> {
return .init(identifier: "ShowTaskDetails")
}
}
And then use perform(_:prepare:)
instead of performSegue(withIdentifier:sender:)
.
That's it!
Type-safe segues
Perform checks the type of the destination view controller and casts it for you, raising an error if your destination view controller is an unexpected type.
Still works if your view controller is embedded in a container
Ever written code like this?
guard let nav = segue.destinationViewController as? UINavigationController,
let content = nav.rootViewController as? MyViewController
else { return }
// ... finally! 😭
Perform takes care of this, searching the view controller hierarchy for a view controller of the matching type!
No switch statements in prepareForSegue(_:sender:)
Multiple segues from one view controller? No problem, just prepare each destination view controller right where you perform the segue. No more massive switch statements.
Further reading
For more examples, and a discussion about the motivation and design of Perform, take a look at the introductory blog post.
Installation
Compatibility
Swift Version | Perform Version |
---|---|
3.x | 2.x |
2.x | 1.x |
Carthage
Add the following to your Cartfile:
github "thoughtbot/Perform" ~> 2.0
Then run carthage update Perform
.
Follow the instructions in Carthage's README for up-to-date installation instructions.
CocoaPods
Add the following to your Podfile:
pod "Perform", "~> 2.0"
See the CocoaPods guide for up-to-date installation instructions.
Contributing
See the [CONTRIBUTING][] document.
License
Perform is Copyright (c) 2016 thoughtbot, inc. It is free software, and may be redistributed under the terms specified in the [LICENSE] file.
About
Perform is maintained and funded by thoughtbot, inc. The names and logos for thoughtbot are trademarks of thoughtbot, inc.
We love open source software! See our other projects or hire us to help build your product.
*Note that all licence references and agreements mentioned in the Perform README section above
are relevant to that project's source code only.