- Build Settings์์ Configuration ๋ณ๋ก ๊ฐ์ ์ง์ ํ์ฌ ์ฌ์ฉํ ์ ์์
- Configuration์ด ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์
- ex) host url
1. Build Settings ์์ Add User-Defined Setting ์ ๋๋ฌ ์ฌ์ฉ์ ์ ์ ์ธํ ์ ์ถ๊ฐ
2. ์ฌ์ฉํ ํ์ดํ์ ์ ๋ ฅํด ์ฃผ๋ฉด Configuration ๋ณ๋ก ๊ฐ์ ์ง์ ํ ์ ์์
3. Info.plist์์ BASE_URL๋ก ์ ๊ทผ์ Build settings ์์ ์ ์ํด ์ค BASE_URL ๊ฐ์ ์ธ ์ ์๋๋ก $(BASE_URL) ๋ก ์ค์ ํด ์ค
Info.plist๋ key/value ์์ผ๋ก ๋น๋ ํ์ ๋์ ์ ๋ฐ์ดํธ ๋๋ ๊ฐ. xCode๋ ๋น๋ ๋๋ ๋์ Build setting์ ์ดํด๋ณด๊ฒ ๋๋๋ฐ ํ์ฌ ๋น๋๋๊ณ ์๋ configuration๊ณผ ํ๋ก์ ํธ์ Info.plist ์ ์๋ ๊ฐ์ด ์ด๋ป๊ฒ ๋๋์ง ํ์ธํจ. (target ๋ณ๋ก ๋ค๋ฅธ info.plist๋ฅผ ๊ฐ์ง ์ ์์ผ๋ ๋น๋์ ์ฃผ์ํด์ผ ํจ)
4. Info.plist์์ ์ ์ ํด์ค ๊ฐ์ Bundle ์์ ์ ๊ทผ ๊ฐ๋ฅ
let baseUrl = Bundle.main.infoDictionary?["BASE_URL"]
infoDictionary์์ key๋ฅผ ๊ฐ์ง๊ณ ํด๋น ๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅํจ
5. Configuration์ ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด $(CONFIGURATION) ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
6. ์ฝ๋ ๋ด๋ถ์์ Bundle ์ด ์๋ ๋ด๋ถ enum์ ์ถ๊ฐํด์ ๊ฐ๊ฒฐํ๊ณ ์ฝ๋ ์ค๋ฅ ์๋ฌ ์์ด ์ฌ์ฉ ๊ฐ๋ฅํจ
import Foundation
enum Configuration: String {
case debug
case release
case qa
static let current: Configuration = {
guard let rawValue = Bundle.main.infoDictionary?["Configuration"] as? String else {
fatalError("No Configuration Found")
}
guard let configuration = Configuration(rawValue: rawValue.lowercased()) else {
fatalError("Invalid Configuration")
}
return configuration // ๋ฆฌํด๋๋ ๊ฑด Configuration ํ์
}()
static var baseURL: URL {
switch current {
case .debug:
return URL(string: "http://debug.com")!
case .release:
return URL(string: "http://staging.com")!
case .qa:
return URL(string: "http://qa.com")!
}
}
}
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS/Swift] Configuration ๋ณ๋ก Firebase plist ํ์ผ ์ค์ (0) | 2023.04.26 |
---|---|
[Xcode/Swift] Multiple Target (0) | 2023.04.26 |
[Xcode/Swift] Configuration ๊ด๋ฆฌํ๊ธฐ (0) | 2023.04.26 |
[iOS/Swift] ์ฑ ๋ฑ์ง ๊ฐฏ์ ๋ณ๊ฒฝ (0) | 2023.04.26 |
[iOS/Swift] Alamofire ํ๋ก์ ํธ๋ฅผ ์ํ UnitTest (0) | 2023.04.21 |
๋๊ธ