有人知道我如何在Swift中获取环境变量吗?
Answers:
连同NSProcessInfo
Oleg提到的-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
,但我想还是要提一下。
对的,这是可能的。采用ProcessInfo
了点。
简单的例子:
let dic = ProcessInfo.processInfo.environment
if dic["VAR"] != nil {
}
由于Swift 3NSProcessInfo
已重命名为ProcessInfo
。并且方法processInfo()
已被property取代processInfo
。
import Foundation
for (key, value) in ProcessInfo.processInfo.environment {
print("\(key): \(value)")
}