티스토리 뷰

공부

SwiftGen

Zedd0202 2020. 4. 28. 18:17
반응형

 

안녕하세요 :) Zedd입니다.

R.swift를 봤으니...이번엔

SwiftGen에 대해서 공부해볼려고 합니다 :D

"SwiftGen"이라는 단어는 단톡방이라던가..어디선가에서 보긴 봤었는데,

이름만 보고는 코드를 generation해주는 Apple 공식....API(?)인 줄 알았는데 지금 보니 아니군요!

아무튼 한번 써보도록 합시다.

 

SwiftGen은 R.Swift와 마찬가지로 프로젝트 리소스 Swift코드를 자동생성하여 사용하기에 안전한 타입을 만들어주는 친구입니다.

- 문자열을 사용할 때 (리소스를 문자열을 통해 초기화 할 때) 생길 수 있는 오타 위험 피할 수 있음.

- "Free auto-completion"

- 존재하지 않는 asset 이름을 사용할 위험을 피하렴......(찡긋)

이 모든것은 컴파일러에 의해 보장되며. Stencil templates...? 덕분에 완벽하게 custom할 수 있음.

 

SwiftGen은 

아주 다양하게 설치 할 수 있군요...저는 Homebrew로.....설치해보겠삼

다른 방법으로 설치하실 분들은 여기에 가셔서 해당 설치방법을 확인해주세요~

터미널 가서 

brew install swiftgen 

 

응 설치 끝

자 그럼 사용해봅시다. Build Phases에 가서 New Run Script Phase 

자 이제 스크립트를 작성해주면 되는데요. 저는 Color asset만!!!!! 코드화 해줬으면 좋겠어요.

딱 이친구들만ㅇㅇㅇ!!!!

자 그럼 스크립트를 작성해봅시다. 

 

보통..Target이름과 저 디렉토리 이름은 똑같잖아요..?

그래서 

swiftgen xcassets ${TARGETNAME}/Colors.xcassets -t swift4 --output "${TARGETNAME}/Assets+Generated.swift"

를 넣어주면 됩니다!

${TARGETNAME}/Colors.xcassets을 "${TARGETNAME}/Assets+Generated.swift"로 만들겠다~ 라고 이해하시면 될 것 같습니다.  

${TARGETNAME}을 꼭 안넣어도 되고, 그냥 SimpleApp으로 명시해줘도 똑같아요!

 

자 이제 빌드를 해볼게요!

그럼

요렇게 제가 지정한 Path에 .swift파일이 만들어진 것을 볼 수 있죠~

들어가보면

짜잔

역시나 이걸 프로젝트로 가져와야겠쬬..!?

가져와줍니다.

 

그러면 이제 쓸 수 이씅ㅁㅋ

SwiftGen은 뭘 만드냐에 따라 enum으로 만들지 struct로 만들지 다른 것 같아요. 

asset은 enum으로 만들어집니다! (font는 struct로 만들어짐) 

 

기본적으로 Asset이라는 이름의 enum이 만들어지는 듯..?

이렇게 사용하면 됩니다. 

 

기본적으로 Asset이라는 이름의 enum이 만들어지는 듯..?

 

기본적으로..?

그,럼 이름 바꿀 수 있냐?

 

 

swiftgen xcassets --param enumName=Colors ${TARGETNAME}/Colors.xcassets -t swift4 --output "${TARGETNAME}/Assets+Generated.swift"

--param enumName=Colors 

를 넣어주면 Colors라는 이름으로 enum이 만들어진답ㄴ디ㅏ!

이렇게 되는것! 원하는 이름을 저기에 넣어주세요~

 

저는 color asset만 코드화?했는데, 

swiftgen xcassets --param enumName=Colors ${TARGETNAME}/Colors.xcassets -t swift4 --output "${TARGETNAME}/Assets+Generated.swift"

하고싶은거 계속 엔터치면서 이어나가시면 됩니다.

저는 asset이니까 

swiftgen xcassets ~ 이었잖아요?

coredata면 swiftgen coredata

font면 swiftgen fonts

...

이런식입니다. 

자세한 사항은

https://github.com/SwiftGen/SwiftGen

 

SwiftGen/SwiftGen

The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! - SwiftGen/SwiftGen

github.com

참고하세요!

 

근데 얘네는 R.Swift랑은 다르게 어필 안하네...

와 저는 당연히 R.swift가 낮을 줄 알았는데...!!!! 의외네요.

근데 SwiftGen 문서에 어필도 안한다? 

이러면 안되지

 

죄송합니다.

스타가 전부는 아니지

R.swift가 SwiftGen처럼 특정 리소스만 코드화 할 수 있게 해주면 참 좋을텐데요,........

지금 R.swift를 보면 그런건 지원 안하는것 같은데...!!! ^_ㅠ 더 알아봐야겠네요.

일단 SwiftGen을 쓰는걸로....!!!

반응형