Brief overview over the architecture I'm using for iOS applications. MVVM with Rx and Protocol Oriented Programming. Bonus of dependencies, tools and project structure.
Make presenta<on logic easier to test • View Models: • Map the model data into presentable data • View Controllers: • set view dodel data into views • UI interac<ons
RxCocoa: RxSwi1 Cocoa extensions • RxDataSources: Table and Collec(on View Data Sources for RxSwi1 • RxOp3onal: RxSwi1 extensions for Swi1 op(onals and "Occupiable" types • Result: type modelling the success/failure of arbitrary opera(ons. • Moya: Network abstrac(on layer wriIen in Swi1. • ObjectMapper: convert your model objects (classes and structs) to and from JSON. • SnapKit: DSL to make Auto Layout easy on iOS • Kingfisher: A lightweight library for downloading and caching image from the web. • Quick: behavior-driven development framework for Swi1 • Nimble: A Matcher Framework for Swi1
code for various assets, strings, storyboards and colors of your project • Synx: A command-line tool that reorganizes your Xcode project folder to match your Xcode groups. • Swi$lint: A tool to enforce Swi' style and convenCons, loosely based on GitHub's Swi' Style Guide • Crashly1cs: powerful, yet lightweight reporCng soluCon for iOS • Fastlane: The easiest way to automate building and releasing your iOS Apps