Skip to content

iOS MVP app which communicates with DuckDuckGo search engine

License

Notifications You must be signed in to change notification settings

teeeeeegz/DuckDuckDefine-iOS

Repository files navigation

DuckDuckDefine - iOS

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

Libraries:

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.

About

iOS MVP app which communicates with DuckDuckGo search engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages