iOS architectures - MVC, MVP, MVVM, MVVM-C, ReactorKit, VIPER, Clean Architecture

Overview

iOS Architectures

Docs

API

Reference

  1. Started from Pawel Krawiec's ios-architecture & Bo-Young PARK's BringMyOwnBeer-
  2. Studied MVVM+RxSwift with Miguel Lin's RxSwift-MVVM-Demo
  3. Studied Coodinator Pattern with wojciech-kulik's Swift-MVVMC-Demo
  4. Studied Clean Architecture with Oleh's iOS-Clean-Architecture-MVVM

Thank for people of this list!

Screenshots

List Search Random

Concept

  1. Objc
  2. Swift
  3. SwiftUI

Environment

Swift 5, Xcode 12.5

0. Shared

Image Download - Kingfisher

Package Management - Cocoapods

$ pod install

1. Objc-MVC

UI - Storyboard

Image - NSCache

Network - NSData to Json

1. MVC - storyboard

UI - Storyboard

Network - URLSession

2. MVC - snapKit

UI - SnapKit

Network - URLSession

3. MVP - snapKit

UI - SnapKit, Then

Network - URLSession

4. MVVM - RxSwift - storyboard

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests ๐Ÿ‘Œ - RxTest

4-1. MVVM - RxSwift - xcodegen

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests ๐Ÿ‘Œ - RxTest

Xcodegen ๐Ÿ‘Œ

$ brew install xcodegen
$ cd MVVM-RxSwift-xcodegen/
$ xcodegen

4-2. MVVM - RxSwift - tuist

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests ๐Ÿ‘Œ - RxTest

Tuist ๐Ÿ‘Œ

$ bash <(curl -Ls https://install.tuist.io)
$ cd MVVM-RxSwift-tuist/
$ tuist generate

4-3. CocoaPods, SPM, Carthage + Rome

MVVM - RxSwift - storyboard's

CocoaPods(original),

SPM,

Carthage

  • Rome, Carting, Fastlane
$ chmod +x carthage.sh
$ ./carthage.sh update --platform iOS

Reference

5. MVVM - RxSwift - snapKit

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests ๐Ÿ‘Œ - RxTest

5-1. MVVM - RxSwift - coreData

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - CoreData

Unit Tests ๐Ÿ‘Œ - RxTest, Nimble

5-2. MVVM - RxSwift - realm

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - Realm

Unit Tests ๐Ÿ‘Œ - RxTest, Nimble

5-3. MVVM - RxSwift - sqlite

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - Sqlite3

Unit Tests ๐Ÿ‘Œ - RxTest, Nimble

5-4. Clean Architecture - MVVM - RxSwift - coredata

5-1. MVVM - RxSwift - coreData to Clean Architecture

6. MVVM-C - RxSwift

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests ๐Ÿ‘Œ - RxTest, Nimble, Quick

CI - Github Actions ๐Ÿ‘Œ

6-1. MVVM-C - RxSwift - Swinject

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests ๐Ÿ‘Œ - RxTest, Nimble, Quick

CI - Github Actions ๐Ÿ‘Œ

DI - Swinject

7. MVVM - RxSwift - RxFlow

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests ๐Ÿ‘Œ - RxTest

โ—๏ธ Alert : I used ' DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) ' Because If tabbarflow does not navigate to a total of 3 flows, it cannot navigate to an alert. If you know a better solution, please PR!

7-1. Clean Architecture - RxFlow - Swinject

โ—๏ธ Alert : I used ' DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) ' Because If tabbarflow does not navigate to a total of 3 flows, it cannot navigate to an alert. If you know a better solution, please PR!

8. ReactorKit - RxFlow

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests ๐Ÿ‘Œ

โ—๏ธ Alert : I used ' DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) ' Because If tabbarflow does not navigate to a total of 3 flows, it cannot navigate to an alert. If you know a better solution,

9. VIPER + Rx

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests ๐Ÿ‘Œ - RxTest

VIPER Template - VIPER + Rx Xcode Template

10. RIBs + Rx

Package Management - SPM

UI - SnapKit, Then, RxDatasources

Network - Moya

Unit Tests ๐Ÿ‘Œ

Reference

1. SwiftUI- MV

Using @State only

Network - Moya

2. SwiftUI-MVVM

Using @Published

Network - Moya

Unit Tests ๐Ÿ‘Œ

3. SwiftUI-MVVM-Combine

Using Combine's PassthroughSubject

Network - Moya

Unit Tests ๐Ÿ‘Œ

3-1. Clean Architecture - MVVM - Combine

Using Combine's PassthroughSubject

Network - Moya

Unit Tests ๐Ÿ‘Œ

๐Ÿ’• WAITING YOUR PR for the better codes.

You might also like...
Quiz app using MVC.
Quiz app using MVC.

Quizzler Our Goal The goal of this tutorial is to take you one step further in your journey of becoming an app developer. We are going to introduce yo

Wiggles-iOS - Beautiful Puppy adoption app built to Demonstrate the SwiftUI and MVVM Architecture
Wiggles-iOS - Beautiful Puppy adoption app built to Demonstrate the SwiftUI and MVVM Architecture

Wiggles ๐Ÿถ Beautiful Puppy adoption app built to Demonstrate the use of SwiftUI

Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t
Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

A sample app that implements MVVM architecture using Swift, ViewModel, Alamofire
A sample app that implements MVVM architecture using Swift, ViewModel, Alamofire

MVVM Architecture Android: Template This repository contains a sample app that implements MVVM architecture using Swift, ViewModel, Alamofire, and etc

Arm64 architecture handler - It uses unicorn and libffi to run iOS arm64 binaries on x86_64 macOS

aah arm64 architecture handler. It uses unicorn and libffi to run iOS arm64 binaries on x86_64 macOS, with varying degrees of success. Most things wil

A compiler, assembler and emulator for the QCPU 2 architecture

QCPU CLI A CLI for compiling Q-code, assembling extended QCPU 2 assembly and emulating machine code. Tags @PAGE upper lower @HEADER label argum

Rosetta Enforcer is a macOS utility designed to help developers convert Universal Binary application to Single Architecture, vice versa.
Rosetta Enforcer is a macOS utility designed to help developers convert Universal Binary application to Single Architecture, vice versa.

Rosetta Enforcer Rosetta Enforcer is a macOS utility designed to help developers convert Universal Binary application to Single Architecture, vice ver

Crypto & Portfolio Track SwiftUI - macOS 13 Ventura & iOS 16 & watchOS 9 - MVVM
Crypto & Portfolio Track SwiftUI - macOS 13 Ventura & iOS 16 & watchOS 9 - MVVM

CryptoTrackMultiPlatformSwiftUI In this SwiftUI project, I developed a multiplatform app using as many new features as possible in the latest OS versi

MVVM - Model View ViewModel done on Swift
MVVM - Model View ViewModel done on Swift

MVVM Model View ViewModel done on iOS Swift Modelโ€“viewโ€“viewmodel (MVVM) is a sof

Owner
๐Ÿ“Œ ์ฝ”๋“œ ๋ฌด๋‹จ ๋ณต์‚ฌ๋ฅผ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. Don't copy my codes except for MIT License.
null
Contacts is an iOS app based on MVP (Model View Presenter) software architectural pattern.

Contacts Description Contacts is an iOS app based on MVP (Model View Presenter) software architectural pattern. Run Requirements Xcode 10.2.1 Swift 5.

Tirupati Balan 4 Apr 26, 2022
This is MVP pattern testing with Swift.

sample-swift-mvp MVP ํŒจํ„ด์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ ์ƒ˜ํ”Œ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ๊ธฐ๋ก MVP ํŒจํ„ด MVP(Model-View-Presenter) ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ด๋‹ค M (Model) - ๋ฐ์ดํ„ฐ ๋ชจ๋ธ - ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ V (View) - M

Youngwoo Lee 0 Nov 10, 2021
tuist, BDD - Test Code, CleanArchitecture, ReactorKit, Swinject

SwinjectReactorKitExample This is a Demo App for tuist, Swinject, Clean Architectue, ReactorKit and BDD ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณด๋ ค๋ฉด tuist๋ฅผ ๊น”๊ณ , generateํ•ด์•ผํ•จ ์‹คํ–‰ํ•ด๋„ ๋ณ„๊ฑฐ

Havi 21 Nov 14, 2022
ReactorKit + Unit Test

left7 ํ˜„์žฌ ์„ธ๊ณ„์—์„œ ์ƒ์˜์ค‘์ธ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ReactorKit + CleanArchitecture๋ฅผ ๋„์ž…ํ•œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. Directory Tree โ”œโ”€โ”€ Left7 โ”‚ โ”œโ”€โ”€ Application โ”‚ โ”œโ”€โ”€ Utility โ”‚ โ”œโ”€โ”€ Prese

LIMJISEONG 3 Nov 15, 2022
IOS Swift Application using VIPER Architecture

IOS Swift Application using VIPER Architecture. This is a simple design application for E-Commerce using VIPER architecture and CoreData, I prefer using Delegate Protocols rather than Third Party Library such as Rx but at this project I make it as an example on how to using VIPER.The application also support localization.

Mahmoud Salah 0 Dec 1, 2021
Create an app using VIPER architecture

How not to get confused with VIPER Implementation This is a demo app to share in swift study group using VIPER Architechture When using VIPER Architec

null 1 Dec 4, 2021
A demo project with VIPER architecture

AQIDemo What is it? A demo project with VIPER architecture. All views, Interactors Presenter and routers are in place with their respective folder. Ap

Vivek Agar 0 Nov 23, 2021
A proof of concept of the VIPER architecture

This project contains a proof of concept of the VIPER architecture. For this we are going to make use of the public API tmdb, with which we will implement a search engine, a list and a view detail.

Luis Martรญnez Zarza 2 Feb 18, 2022
Quizzler - iOS App Design Pattern(MVC) and Code Structuring

Quizzler iOS App Design Pattern(MVC) and Code Structuring What you will learn Ho

null 0 Jan 10, 2022
Easy quiz just for reviewing structures and MVC

Quizzler Our Goal The goal of this tutorial is to take you one step further in your journey of becoming an app developer. We are going to introduce yo

null 1 May 3, 2022