/GSBaseMVC

MVC Base Project

Primary LanguageSwiftMIT LicenseMIT

License: MIT Swift: 5.0.x

GSBaseMVC

GSBaseMVC is a base project which follows MVC(Model-View-Controller) coding pattern.

What is MVC?

The Model-View-Controller concept describes 3 components:
  • Model: a wrapper of data
  • View: a representation of a user interface (UI)
  • Controller: an intermediary between the Model and the View

alt text

How the messages can flow from one component to the other:
  • The View tells the Controller when a user interaction takes place
  • The Controller updates the View when the data changes
  • The Controller updates the Model when the data changes
  • The Model notifies the Controller when data changes

Why to use MVC?

  • MVC is Apple’s recommended architectural pattern.
  • It is an exceptionally powerful software architectural pattern for creating apps
  • It keeps your code concise and readable.
  • Well known architecture pattern, most developers know and understand MVC.
  • It increases the modularity of your code.
  • It allows for a clear separation of your application’s data/logic, views, and controllers.

Key Features:

  • Basic MVC Architecture
  • Push notification Integration
  • Simple TableView
  • Simple CollectionView
  • SJSegment Controller
  • SJSegment Controller with Header
  • PullToRefresh for all the listings
  • Pagination in TableView
  • Language Localization

How to run the project?

  • Make sure you have an active internet connection and connected with a Physical device or you can use Xcode Simulator too.
  • download or clone the project
  • Open the terminal
  • cd project_path
  • pod install
  • Open .xcworkspace file from your project folder
  • Run the project from Xcode

Coding Standards Implemented

  • MVC Architecture
  • Swift Language(Version: 5.2)
  • Followed Apple Human User Interface Guidelines
  • Used Pods for other third-party libraries
  • Used Asset Catalog for Images used in the application
  • App Icon and Launch Image from Asset Catalog
  • Well structured code
  • Use JSON4Swift to create models quickly & efficiently
  • Proper code commenting
  • Used //MARK: to mark a section of my code
  • Implemented Constant file to store global constants
  • Global files to increase reusability of code
  • Checked Internet Connectivity
  • Managed image caching for smooth user experience
  • Followed double optional(??) instead of compulsory(!) pattern as and when possible to avoid unnecessary crashes
  • The project contains Code Documentation same as Apple Documentation

Ackowledgement

This project has used other third party libraries available on GitHub as mentioned below:

Happy Coding! Cheers!! 🥂

How to Contribute?

Have an idea? Found a bug? See how to contribute. Every small or large contribution to this project is appreciated.

Author

You can find more about me here : Gati Shah

If you wish to contact me, Email at: connect@igati.tech

Reach me on: LinkedIn

License

Copyright 2020 iGatiTech

This project is distributed under the terms & conditions of MIT License.