iOS SwiftUI Factory

사용 언어: Swift 5
사용 버전: Xcode 15.2

iOS 스위프트유아이 Factory를 알아보겠습니다.


Factory는 DI(Dependency Injection, 의존성 주입)를 위한 라이브러리입니다.
그리고 Resolver라는 DI library를 대체하는 오픈 소스입니다.

아래는 Factory Github입니다.
https://github.com/hmlongco/Factory




우선 설치부터 합시다.
CocoaPods와 SPM(Swift Package Manager)를 모두 지원합니다.
SPM을 사용해서 설치해 봅시다.

File - Add Package Dependencies...




Github 주소를 넣어주고 Add Package를 누릅니다.







Add Package 클릭.






그러면 Xcode에 Factory Package가 보입니다.





설치가 다 되었네요.


여기 수동으로 Dependency Injection 한 것을 Factory를 사용하여 Injection 하는 걸로 변경해 봅시다.
AppContainer.swift







Data 그룹에 FactoryContainer 파일을 만듭니다.






기존에 있던 AppContainer와 App delegate들을 모두 삭제합니다.
AppContainer.swift, AppDelegate.swift 삭제.


Container에 extension을 만들어서 적어줍니다.
한 번 만들 때 가볍지 않고, 오랫동안 쓸 변수이기 때문에 singleton을 적어줍니다.






userInitiated도 container에 추가합니다.
기본으로 만들면 unique를 사용하는 것으로 매번 새로운 Instance를 만듭니다.






NetworkAmphibiansDataSource에 Injected로 위에서 만든 container를 넣어줍니다.
@Injected는 init에서 초기화하는 것과 같습니다.
AmphibiansRemoteDataSource.swift







networkAmphibiansDataSource를 container에 추가합니다.






networkAmphibiansDataSource를 @Injected 해줍니다.
AmphibiansInfoRepository.swift





container에 networkAmphibiansInfoRepository를 추가합니다.






방금 만든 networkAmphibiansInfoRepository를 Injected 합니다.
AmphibiansViewModel.swift





Container에 amphibiansViewModel을 추가합니다.






InjectedObject로 amphibiansViewModel을 Inject 합니다.
AmphibiansApp.swift





실행해 봅시다.





잘 되네요.


Manual Dependency Injection을 Fafctory를 사용한 Dependency Injection으로 변경하였습니다.


iOS SwiftUI Factory with test 게시글과 이어집니다.



끝.



카테고리: iOS, SwiftUI

댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

Python bytes.fromhex()

Python OpenCV 빈 화면 만들기

Android Notification with Full Screen

Android Minimum touch target size

Android Compose Instrumentation test to unit test

KiCad 시작하기 7 (FreeRoute 사용하기 2)

tensorflow tf.expand_dims()

딩기 요트 명칭

Android AVD Ram size change