An iOS MVC project ripped apart then put back together with MVP, sharing common business logic between iOS and Android app architectures.
My inspiration for this project was to refamiliarise my understanding of iOS development, bringing across refined architecture concepts and workflows used for developing Android apps, to bridge my knowledge-gap of iOS development. I was unable to find a boilerplate project which combined MVP with Rx, Dependency Injection, near-auto JSON serialisation, and image loading & caching, all of which is mandatory in the Android apps I develop.
This project will benefit those who develop for either Android or iOS, and intend to transition to the other at some stage. I have created an Android-alterative to this project with common libraries found in production apps today. Both projects share the same business logic and will aid in understanding the differences between Swift & Java syntax, and iOS & Android frameworks, learning through example.
The Java-Android-alternative project can be found here
The Kotlin-Android-alternative project can be found here
The following libraries were used, most of which have an Android alternative:
- RxSwift to provide a reactive programming standard VERY similar to RxJava implementation
- Alamofire for API communication. Alternative to OkHttp/Retrofit
- RxAlamofire to Rxify network streams. Retrofit has Rx plugs baked in
- SwiftyJSON to parse Alamofire 'Data' response to JSON
- Gloss to serialise JSON to POSO(?)'s, and vice-versa. Alternative to Moshi
- Swinject for dependency injection. Alternative to Dagger
- SwinjectStoryboard to provide singleton class/struct injection's into business logic classes/view controllers
- Kingfisher for image caching and loading. Alternative to Picasso
- Carthage, not a library, but I use it due to its similarity of simplicity when adding dependencies to your build.gradle file
Original iOS project downloaded from Ray Wenderlich's site, here.