programing

Swift의 환경변수 참조

linuxpc 2023. 8. 24. 21:49
반응형

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)
}

Swift 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오류가 발생했지만, 그것은 다른 날의 주제입니다.

이것이 도움이 되길 바랍니다!

추신. 위의 기능은 다음을 필요로 합니다.Darwin가져올 모듈입니다.Foundation자동으로 가져오기Darwin그럼에도 불구하고 나는 그것을 언급해야 한다고 생각했습니다.

네, 가능합니다. 사용하세요.ProcessInfo그것 때문에

간단한 예:

let dic = ProcessInfo.processInfo.environment
if dic["VAR"] != nil {

}

스위프트 3 이후NSProcessInfo로 이름이 변경되었습니다.ProcessInfo그리고 방법processInfo()자산으로 대체되었습니다.processInfo.

import Foundation

for (key, value) in ProcessInfo.processInfo.environment {
    print("\(key): \(value)")
}

또는 Apple 개발자 포럼에 설명된 대로 Info.plist 파일을 사용하여 앱이 런타임에 필요로 하는 빌드 타임 환경 변수를 저장할 수 있습니다.

예를 들어 다음과 같은 MyConfig.xccconfig 파일이 있는 경우:

MY_SECRET_API_KEY = mysupersecretapikeyvaluehere

Info.plist에서 다음과 같은 항목을 추가해야 합니다.

<key>MySecretApiKey</key>
<string>$(MY_SECRET_API_KEY)</string>

마지막으로 코드에서 변수 값을 다음과 같이 읽습니다.

guard let infoDictionary: [String: Any] = Bundle.main.infoDictionary else { return }
guard let mySecretApiKey: String = infoDictionary["MySecretApiKey"] as? String else { return }
print("Here's your api key value -> \(mySecretApiKey)")

증기 관련 용액:

Vapor가 프로젝트 템플릿으로 자동 생성하는 코드:

let variable = Environment.get("VARIABLE") ?? "or-the-dafault"

언급URL : https://stackoverflow.com/questions/36219597/referring-to-environment-variables-in-swift

반응형