iOS 앱 개발 시 리소스 파일을 효율적으로 관리하는 것은 매우 중요합니다. SwiftGen은 이를 도와주는 유용한 도구 중 하나입니다. SwiftGen은 각종 리소스 파일을 코드로 자동으로 생성해주어 개발자가 쉽게 사용할 수 있도록 도와줍니다. 그러나 SwiftGen을 사용할 때 몇 가지 주의해야 할 점이 있습니다. 이번 포스트에서는 SwiftGen 사용 시 파일 관리에 대해 알아보겠습니다.
1. 디렉터리 구조 설계
SwiftGen을 사용하면 리소스 파일을 코드로 쉽게 가져올 수 있습니다. 하지만 이를 위해서는 앱의 디렉터리 구조를 잘 설계해야 합니다. 예를 들어, 이미지 리소스 파일은 ‘Assets’라는 디렉터리에 저장하고, 로컬라이제이션 파일은 ‘Localization’이라는 디렉터리에 저장하는 것이 좋습니다. 각 리소스 파일의 타입에 맞는 디렉터리를 만들어 두면, 코드에서 해당 디렉터리를 참조하여 리소스 파일에 쉽게 접근할 수 있습니다.
2. SwiftGen 설정 파일 작성
SwiftGen을 사용하기 위해서는 프로젝트 루트 디렉터리에 SwiftGen 설정 파일을 작성해야 합니다. 이 설정 파일은 어떤 리소스 파일을 코드로 가져올 것인지, 어떤 디렉터리 구조를 사용할 것인지 등을 정의하는 역할을 합니다. 설정 파일은 YAML 형식으로 작성되며, 각각의 리소스 타입(예: 이미지, 폰트, 색상 등)에 대한 설정을 지정할 수 있습니다.
# swiftgen.yml
assets:
inputs:
- Assets/*.xcassets
strings:
inputs:
- Localization/*.strings
output:
templateName: structured-swift4
params:
enumName: LocalizedStrings
위의 예시는 ‘Assets’ 폴더에 있는 xcassets 파일과 ‘Localization’ 폴더에 있는 strings 파일을 SwiftGen으로 처리하도록 설정한 것입니다. 설정 파일을 작성해야만 SwiftGen이 정확하게 리소스 파일을 관리하고 코드로 생성해줄 수 있습니다.
3. SwiftGen 명령어 실행
설정 파일을 작성한 후에는 SwiftGen을 실행하여 리소스 파일을 코드로 생성해야 합니다. 다음과 같은 명령어를 사용하여 SwiftGen을 실행할 수 있습니다.
$ swiftgen
이 명령어를 프로젝트 루트 디렉터리에서 실행하면 SwiftGen은 설정 파일에 정의된 리소스 파일을 기반으로 코드를 생성합니다. 생성된 코드는 앱 프로젝트에 자동으로 추가되어 리소스 파일을 쉽게 사용할 수 있도록 해줍니다.
4. 생성된 코드 사용
SwiftGen이 리소스 파일로부터 생성한 코드는 일반적으로 Generated
라는 디렉터리에 저장됩니다. 생성된 코드를 사용하려면 해당 파일을 앱 프로젝트에 추가해야 합니다. 그 후에는 생성된 코드를 직접 사용하거나, 각종 리소스에 접근하기 위해 필요한 메소드나 열거형을 사용할 수 있습니다.
아래는 SwiftGen을 사용하여 이미지 리소스에 접근하는 예시 코드입니다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let imageView = UIImageView(image: UIImage(asset: .logo))
self.view.addSubview(imageView)
}
}
위의 코드에서 UIImage(asset: .logo)
라는 구문으로 SwiftGen에서 자동으로 생성한 이미지 리소스에 접근합니다.
마무리
SwiftGen을 사용하여 리소스 파일을 관리하면 코드에서 리소스에 접근하기 편리해지며, 오타나 잘못된 사용을 방지할 수 있습니다. 디렉터리 구조 설계와 SwiftGen 설정 파일 작성에 주의하면서 SwiftGen을 적극적으로 활용해보세요.
References
- SwiftGen GitHub Repository
- SwiftGen Documentation
- Using SwiftGen for iOS Project Resource Management
- Code Generation with SwiftGen