티스토리 뷰
안녕하세요 :) 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
참고하세요!
근데 얘네는 R.Swift랑은 다르게 어필 안하네...
와 저는 당연히 R.swift가 낮을 줄 알았는데...!!!! 의외네요.
근데 SwiftGen 문서에 어필도 안한다?
이러면 안되지
죄송합니다.
스타가 전부는 아니지
R.swift가 SwiftGen처럼 특정 리소스만 코드화 할 수 있게 해주면 참 좋을텐데요,........
지금 R.swift를 보면 그런건 지원 안하는것 같은데...!!! ^_ㅠ 더 알아봐야겠네요.
일단 SwiftGen을 쓰는걸로....!!!
'공부' 카테고리의 다른 글
[AVCaptureDevice setActiveColorSpace:] Not supported - use activeFormat.supportedColorSpaces' (2) | 2020.05.12 |
---|---|
Color Asset을 코드로 만들어보자 (3) | 2020.04.29 |
R.swift (0) | 2020.04.28 |
Depth와 Matte (1) | 2020.04.23 |
dyld: Library not loaded: @rpath/XCTest.framework/XCTest (2) | 2020.04.09 |
- 스위프트 문법
- 스위프트
- 피아노
- WKWebView
- 제이슨 파싱
- ios 13
- Swift
- FLUTTER
- np-hard
- swift delegate
- swift3
- WWDC
- SwiftUI
- swift 공부
- github
- WidgetKit
- actor
- swift array
- np-complete
- fastlane
- Git
- Xcode
- Combine
- swift tutorial
- iOS delegate
- UIBezierPath
- swift sort
- Accessibility
- IOS
- 회고
- Total
- Today
- Yesterday