iOS Architectures
Docs
API
Reference
- Started from Pawel Krawiec‘s ios-architecture & Bo-Young PARK‘s BringMyOwnBeer-
- Studied MVVM+RxSwift with Miguel Lin‘s RxSwift-MVVM-Demo
- Studied Coodinator Pattern with wojciech-kulik‘s Swift-MVVMC-Demo
- Studied Clean Architecture with Oleh‘s iOS-Clean-Architecture-MVVM
Thank for people of this list!
Screenshots
Concept
- Objc
- Swift
- SwiftUI
Environment
Swift 5, Xcode 12.5
0. Shared
Image Download – Kingfisher
Package Management – Cocoapods
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
?
$ cd MVVM-RxSwift-xcodegen/
$ xcodegen
UI – Storyboard, RxDatasource
Network – RxURLSession
Unit Tests
?
– RxTest
Tuist
?
<div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="$ bash
$ bash <(curl -Ls https://install.tuist.io)
$ cd MVVM-RxSwift-tuist/
$ tuist generate
MVVM – RxSwift – storyboard‘s
CocoaPods(original),
SPM,
Carthage
$ 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
❗️
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!
❗️
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!
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,
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
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
?
?
WAITING YOUR PR for the better codes.
GitHub
https://github.com/Goeun1001/ios-architectures