在Swift中引用环境变量


Answers:


100

Swift 3及更高版本:

import Foundation

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

31

连同NSProcessInfoOleg提到的-based方法,您可以使用标准Cgetenv函数访问环境变量,如下所示:

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查看在操场上使用“实时”视图时遇到的一个奇怪错误的回溯。默认情况下,backtrace不显示在控制台中,因此我必须设置CG_CONTEXT_SHOW_BACKTRACE环境变量以查看发生了什么:

setenv("CG_CONTEXT_SHOW_BACKTRACE", "1", 1)

之后,航行顺畅。好吧,除了CGContext我得到的错误以外,但这是另一天的话题。

希望这可以帮助!

PS以上功能需要Darwin导入模块。Foundation自动导入Darwin,但我想还是要提一下。


如果要为Xcode项目设置环境变量,则可以编辑“方案”>“运行”>“参数”部分,您可以在其中添加环境变量
user1046037 '19


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.