development

Swift에서 환경 변수 참조

big-blog 2020. 12. 11. 19:07
반응형

Swift에서 환경 변수 참조


누구든지 Swift에서 환경 변수를 어떻게 잡을 수 있는지 알고 있습니까?


Swift 3 이상 :

import Foundation

if let value = ProcessInfo.processInfo.environment["key"] {
    ...
}

NSProcessInfoOleg에서 언급 한 기반 방법 과 함께 다음과 같이 표준 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 NSProcessInfoProcessInfo. 그리고 방법 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

반응형