SwiftyVIPER alternatives and similar libraries
Based on the "Code Quality" category.
Alternatively, view SwiftyVIPER alternatives based on common mentions on social networks and blogs.
-
OCLint
A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C -
IBAnalyzer
DISCONTINUED. Find common xib and storyboard-related problems without running your app or writing unit tests. -
SwiftCop
SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations. -
Warnings-xcconfig
An xcconfig (Xcode configuration) file for easily turning on a boatload of warnings in your project or its targets. -
PSTModernizer
Makes it easier to support older versions of iOS by fixing things and adding missing methods -
Trackable
DISCONTINUED. Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing projects.
InfluxDB - Purpose built for real-time analytics at any scale.
* 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 SwiftyVIPER or a related project?
README
SwiftyVIPER
[Header][main-image]
SwiftyVIPER allows easy use of VIPER architecture throughout your iOS application.
VIPER Architecture
What is VIPER? Great question! VIPER is a backronym which stands for:
- View
- Interactor
- Presenter
- Entity
- Router
If all of this is totally new for you, check out my running list of VIPER Resources
Features
- [x] VIPER Module Templates
- [x] VIPER Unit Test Templates
- [x] Simple Module Initialization and Presentation
- [x] CocoaPods Support
- [x] Carthage Support
Requirements
- iOS 8.0+ | tvOS 9.0+
- Xcode 9
- Swift 4
Installation
CocoaPods
You can use CocoaPods to install SwiftyVIPER
by adding it to your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '8.0'
def shared_pods
pod 'SwiftyVIPER', '~> 1.0'
end
target 'MyApp' do
shared_pods
end
target 'MyAppTests' do
shared_pods
end
To get the full benefits import SwiftyVIPER
wherever you import UIKit
import UIKit
import SwiftyVIPER
Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
brew update
brew install carthage
To integrate SwiftyVIPER into your Xcode project using Carthage, specify it in your Cartfile
:
github "codytwinton/SwiftyVIPER" ~> 1.0
Run carthage update
to build the framework and drag the built SwiftyVIPER.framework
into your Xcode project.
Manually
This is discouraged, but allowed. :D
- Download and drop the
Source
folder in your project. - Congratulations!
Usage of SwiftyVIPER
Installing Templates
If you're looking for VIPER architecture templates to use directly within Xcode, you can find these in the /Templates/VIPER
folder. Open your terminal and run:
cd PATH/TO/REPO
Then, simply run this command in your terminal:
mkdir -p ~/Library/Developer/Xcode/Templates/File\ Templates
cp -R Templates/VIPER ~/Library/Developer/Xcode/Templates/File\ Templates
Adding a Module
Once you've installed the VIPER Templates, you're ready to add a module. Select File > New > File
or use press ⌘N
to bring up the template selector. You'll find the templates at the bottom.
Choose Module
for a normal module, Module Storyboard
for a normal module that interacts with Storyboards, or Module Tests
for a module unit tests template.
[Choice](Assets/Template Choice.png)
Next, choose the Module name. We'll go with Custom
.
[Name](Assets/Template Name.png)
This will create 5 files per module:
CustomModule.swift
CustomViewController.swift
CustomPresenter.swift
CustomRouter.swift
CustomInteractor.swift
Don't forget to target your main app. Once you've added the main template, go ahead and add the Unit Test template. Make sure it's the same name! In this case, we'd stay with Custom
.
Using SwiftyVIPER
Simply add a new module using the VIPER template. Once done, simply call:
import SwiftyVIPER
CustomModule().present(from: self.viewController, style: .coverVertical, completion: nil)
The module will handle the rest, including initializing and attaching all the connections necessary for the Module to show properly.
Contribute
We would love for you to contribute to SwiftyVIPER, check the LICENSE
file for more info. Pull Requests welcome!
Resources
- mutualmobile.com
- objc.io
- ckl.io
- stackoverflow.com
- yalantis.com
- medium.com
- speakerdeck.com
- brigade.engineering
Meta
- Cody Winton – @codytwinton
- Distributed under the MIT license. See [LICENSE][license-url] for more information.
- Inspired by ViperMcFlurry
- README edited with StackEdit
*Note that all licence references and agreements mentioned in the SwiftyVIPER README section above
are relevant to that project's source code only.