많은 앱은 사용자 설정을 관리해야 합니다. 예를 들어, 언어 설정, 테마 설정 등을 사용자가 변경할 수 있게 해주는 기능이 많이 있습니다. 이러한 설정을 효율적으로 관리하기 위해, SwiftGen이라는 라이브러리를 사용할 수 있습니다.
SwiftGen이란?
SwiftGen은 iOS 및 macOS 앱의 리소스를 쉽게 관리하기 위한 도구입니다. 리소스 파일을 코드로 접근할 수 있는 형식으로 변환하여, 타이핑 실수나 파일 경로 문제를 예방할 수 있습니다. 각 리소스 유형에 대한 강한 타입과 자동 완성을 제공하므로, 개발자는 안전하게 리소스에 접근할 수 있습니다.
사용자 설정 관리하기
SwiftGen을 사용하여 사용자 설정을 관리하는 예제를 살펴보겠습니다. 이 예제에서는 언어 설정과 테마 설정을 관리하는 기능을 구현합니다.
- 먼저,
Languages.plist
파일을 생성하고, 아래와 같이 언어 설정 정보를 작성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>en</key>
<string>English</string>
<key>ko</key>
<string>한국어</string>
</dict>
</plist>
Themes.plist
파일을 생성하고, 아래와 같이 테마 설정 정보를 작성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>light</key>
<string>Light</string>
<key>dark</key>
<string>Dark</string>
</dict>
</plist>
SwiftGen.yml
파일을 생성하고, 다음과 같이 설정합니다.
strings:
inputs:
- Resources/Strings
- Languages.plist
outputs:
- templateName: structured-swift4
output: Resources
params:
enumName: Language
keyColumnName: key
valueColumnName: value
tableName: Localizable
xcassets:
inputs:
- Resources/Assets.xcassets
outputs:
- templateName: swift4
output: Resources
-
프로젝트에
SwiftGen
을 추가하고,SwiftGen.yml
파일을 설정에 추가합니다. -
이제, 언어 설정과 테마 설정을 다음과 같이 코드로 접근할 수 있습니다.
// 언어 설정
let currentLanguage = Language.allCases.first { $0.rawValue == UserDefaults.standard.string(forKey: "language") }
let languageName = currentLanguage?.table.localized(for: currentLanguage)
// 테마 설정
let currentTheme = Theme(rawValue: UserDefaults.standard.string(forKey: "theme") ?? "")
let themeName = currentTheme?.rawValue.localized()
위의 코드에서, Language
는 SwiftGen
을 사용하여 생성된 열거형입니다. 이를 통해 언어 설정 값을 타입 안전하게 가져올 수 있습니다. 마찬가지로, Theme
도 열거형으로 정의하여 테마 설정 값을 관리할 수 있습니다.
결론
SwiftGen은 iOS 및 macOS 앱의 리소스 관리를 더 효율적으로 할 수 있도록 도와주는 강력한 도구입니다. 사용자 설정과 같은 리소스를 관리할 때 유용하게 사용할 수 있으며, 타이핑 실수나 경로 문제를 사전에 예방할 수 있습니다. SwiftGen을 사용하여 안전하고 효율적인 앱 개발을 진행해보세요.