Swift에서 plist를 이용하여 각 환경(개발, 정식 공연 등)에 대한 설정치를 바꾸다
13626 단어 Swift
1. Custom Configuration 추가
step1. PROJECT->info->Configuration에서 추가
「+」->「Duplicate "Debug"Configuration」
추가 전
추가 후
2. Info.plist 편집
step1. Configuration 추가
Key:Configuration,Value:${CONRIGURATION}추가
step2. 출력 확인
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Configuration取得
let configuration = NSBundle.mainBundle().infoDictionary!["Configuration"]
print("Current Configuration > \(configuration)")
return true
}
이런 느낌으로 내보내면 OK.Current Configuration > Optional(Debug)
3. Scheemes 수정
step1. Edit Schomes에서 Build Configuration 변경
step2. CocoaPods 업데이트(Cocoapds 미사용 시 필요없음)
추가된 Configuration (여기는 Development) 의 xcconfig가 없으면 오류가 발생하여 업데이트됩니다.
$ pod update
4. Configuration.plist 추가
step1. 새 plist
step2. 항목 추가
step3. 출력 확인
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let mainBundle = NSBundle.mainBundle()
// Configuration取得
let configuration = mainBundle.infoDictionary!["Configuration"]
// Configurations.plist読み込み
let path = mainBundle.pathForResource("Configurations", ofType: "plist")
let configurations = NSDictionary(contentsOfFile: path!)
// Load Variables for Current Configuration
let variables = configurations?.objectForKey(configuration!) as! [String : AnyObject]
print(variables["APIEndpoint"])
return true
}
이런 느낌으로 내보내면 OK.Optional(http://development.example.com)
5. 사용이 편리하다
step1. 새 AppConf 클래스
(생략)
step2. AppConf 클래스 편집
AppConf.swift
import Foundation
final class AppConf {
private static let sharedInstance = AppConf()
private var configuration: String
private var variables: [String: AnyObject]
private init() {
// Singletonの確認用
print("Configuration initialization")
let mainBundle = NSBundle.mainBundle()
// Fetch Current Configuration
self.configuration = (mainBundle.infoDictionary?["Configuration"]) as! String
// Load Configurations
guard let path = mainBundle.pathForResource("Configurations", ofType: "plist") else {
self.variables = [:]
return
}
let configurations = NSDictionary(contentsOfFile: path)
// Load Variables for Current Configuration
self.variables = configurations?.objectForKey(self.configuration) as! [String : AnyObject]
}
class func Configuration() -> String {
return sharedInstance.configuration
}
class func APIEndpoint() -> String {
guard let endpoint = sharedInstance.variables["APIEndpoint"] else {
return ""
}
return endpoint as! String
}
class func isLoggingEnabled() -> Bool {
guard let enabled = sharedInstance.variables["LoggingEnabled"] else {
return false
}
return enabled as! Bool
}
}
step3. 동작 확인
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
for i in 1...5 {
print("\(i)回目: \(AppConf.APIEndpoint())")
}
return true
}
이런 느낌으로 내보내면 OK.Configuration initialization
1回目: http://development.example.com
2回目: http://development.example.com
3回目: http://development.example.com
4回目: http://development.example.com
5回目: http://development.example.com
6. 참조 사이트
iOS Quick Tip: Managing Configurations With Ease
THE RIGHT WAY TO WRITE A SINGLETON
Reference
이 문제에 관하여(Swift에서 plist를 이용하여 각 환경(개발, 정식 공연 등)에 대한 설정치를 바꾸다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/negibouze/items/1c1c977cab5ef26224fd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)