Swift에서 환경 변수 참조
누구든지 Swift에서 환경 변수를 어떻게 잡을 수 있는지 알고 있습니까?
Swift 3 이상 :
import Foundation
if let value = ProcessInfo.processInfo.environment["key"] {
...
}
NSProcessInfo
Oleg에서 언급 한 기반 방법 과 함께 다음과 같이 표준 C getenv
함수를 사용하여 환경 변수에 액세스 할 수 있습니다 .
Swift 2.x :
func getEnvironmentVar(name: String) -> String? {
let rawValue = getenv(name)
guard rawValue != nil else { return nil }
return String(UTF8String: rawValue)
}
스위프트 3.0 :
func getEnvironmentVar(_ name: String) -> String? {
guard let rawValue = getenv(name) else { return nil }
return String(utf8String: rawValue)
}
함수를 사용하여 환경 변수 를 설정할 수도 있습니다 setenv
.
func setEnvironmentVar(name: String, value: String, overwrite: Bool) {
setenv(name, value, overwrite ? 1 : 0)
}
변수 설정 기능을 언급 한 이유는 Xcode Playground에서 작업 할 때 변수를 설정하는 유일한 방법이기 때문입니다.
최근 CGContext
에 놀이터에서 "라이브"뷰로 작업 할 때 발생 하는 이상한 오류에 대한 역 추적을보고 싶었습니다 . 기본적으로 역 추적은 콘솔에 표시되지 않으므로 상황 CG_CONTEXT_SHOW_BACKTRACE
을 확인 하려면 환경 변수를 설정해야 했습니다.
setenv("CG_CONTEXT_SHOW_BACKTRACE", "1", 1)
그 후 순조로운 항해였습니다. 글쎄, CGContext
내가 얻은 오류 외에는 다른 날의 주제입니다.
도움이 되었기를 바랍니다!
PS 위의 기능을 사용하려면 Darwin
모듈을 가져와야합니다. Foundation
자동으로 가져 오기 Darwin
는하지만 그럼에도 불구하고 언급해야한다고 생각했습니다.
네 가능합니다. ProcessInfo
그것을 위해 사용하십시오 .
간단한 예 :
let dic = ProcessInfo.processInfo.environment
if dic["VAR"] != nil {
}
Swift 3 NSProcessInfo
는 ProcessInfo
. 그리고 방법 processInfo()
은 속성으로 대체되었습니다 processInfo
.
import Foundation
for (key, value) in ProcessInfo.processInfo.environment {
print("\(key): \(value)")
}
참고 URL : https://stackoverflow.com/questions/36219597/referring-to-environment-variables-in-swift