Skip to content

A Collection of iOS architectures - MVC, MVP, MVVM, MVVM-C, ReactorKit, VIPER, Clean Architecture, RIBs; Repository Pattern, Rxflow, Swinject, Tuist, Xcodegen, Cocoapods, SPM, Carthage + Rome

License

Notifications You must be signed in to change notification settings

eymin1259/ios-architectures

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

UI - Storyboard

Image - NSCache

Network - NSData to Json

UI - Storyboard

Network - URLSession

UI - SnapKit

Network - URLSession

UI - SnapKit, Then

Network - URLSession

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests πŸ‘Œ - RxTest

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests πŸ‘Œ - RxTest

Xcodegen πŸ‘Œ

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

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests πŸ‘Œ - RxTest

Tuist πŸ‘Œ

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

MVVM - RxSwift - storyboard's

CocoaPods(original),

SPM,

Carthage

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

Reference

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - CoreData

Unit Tests πŸ‘Œ - RxTest, Nimble

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - Realm

Unit Tests πŸ‘Œ - RxTest, Nimble

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - Sqlite3

Unit Tests πŸ‘Œ - RxTest, Nimble

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

UI - SnapKit, Then, RxDatasource

Network - Moya

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

CI - Github Actions πŸ‘Œ

UI - SnapKit, Then, RxDatasource

Network - Moya

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

CI - Github Actions πŸ‘Œ

DI - Swinject

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest

  1. MVVM - RxSwift - RxFlow to Clean Architecture

DI - Swinject

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest

VIPER Template - VIPER + Rx Xcode Template

Package Management - SPM

UI - SnapKit, Then, RxDatasources

Network - Moya

Unit Tests πŸ‘Œ

Reference

  • iOS 13

Using @State only

Network - Moya

Using @Published

Network - Moya

Unit Tests πŸ‘Œ

Using Combine's PassthroughSubject

Network - Moya

Unit Tests πŸ‘Œ

Using Combine's PassthroughSubject

Network - Moya

Unit Tests πŸ‘Œ

  • iOS 14
  1. SwiftUI-MVVM-Combine's SwiftUI 2.0

Used

 ScrollView {
      LazyVStack {

Instead of

List {

Used

if viewModel.isLoading {
                    ProgressView()
                        .progressViewStyle(CircularProgressViewStyle())
                        .scaleEffect(2.0, anchor: .center)
                }

Instead of

ActivityIndicator(isAnimating: $viewModel.isLoading, style: .large)
  • iOS 15, Xcode 13.0
  1. SwiftUI-MVVM-Combine's SwiftUI 3.0

Used

.refreshable {

Instead of

.introspectTableView { scrollView in

Used

AsyncImage

Instead of

KFImage

Used

.searchable(text: $viewModel.text)

Instead of

TextField("Search ...", text: $viewModel.text

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

About

A Collection of iOS architectures - MVC, MVP, MVVM, MVVM-C, ReactorKit, VIPER, Clean Architecture, RIBs; Repository Pattern, Rxflow, Swinject, Tuist, Xcodegen, Cocoapods, SPM, Carthage + Rome

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 96.3%
  • Objective-C 2.2%
  • Ruby 1.5%