iOS SwiftUI Factory
사용 언어: Swift 5
사용 버전: Xcode 15.2
사용 버전: Xcode 15.2
iOS 스위프트유아이 Factory를 알아보겠습니다.
그리고 Resolver라는 DI library를 대체하는 오픈 소스입니다.
아래는 Factory Github입니다.
https://github.com/hmlongco/Factory
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
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.