eml*_*lai 77
Swift 3及以上:
import Foundation
if let value = ProcessInfo.processInfo.environment["key"] {
...
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*ock 28
与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)
}
Run Code Online (Sandbox Code Playgroud)
Swift 3.0:
func getEnvironmentVar(_ name: String) -> String? {
guard let rawValue = getenv(name) else { return nil }
return String(utf8String: rawValue)
}
Run Code Online (Sandbox Code Playgroud)
也可以使用以下函数设置环境变量setenv
:
func setEnvironmentVar(name: String, value: String, overwrite: Bool) {
setenv(name, value, overwrite ? 1 : 0)
}
Run Code Online (Sandbox Code Playgroud)
我提到设置变量的能力的原因是因为这是我在Xcode Playground中工作时设置变量的唯一方法.
我最近想看到一个回溯,因为CGContext
我在操场上使用"实时"视图时遇到了一个奇怪的错误.默认情况下,回溯未显示在控制台中,因此我必须设置CG_CONTEXT_SHOW_BACKTRACE
环境变量以查看其中的内容:
setenv("CG_CONTEXT_SHOW_BACKTRACE", "1", 1)
Run Code Online (Sandbox Code Playgroud)
在那之后,一帆风顺.好吧,除了CGContext
我得到的错误,但这是另一天的主题.
希望这可以帮助!
PS以上功能需要Darwin
导入模块.Foundation
自动进口Darwin
,但我想我应该提到它.
Ole*_*huk 12
对的,这是可能的.使用ProcessInfo
了点.
简单的例子:
let dic = ProcessInfo.processInfo.environment
if dic["VAR"] != nil {
}
Run Code Online (Sandbox Code Playgroud)
自从Swift 3 NSProcessInfo
改名为ProcessInfo
.并且方法processInfo()
已被属性替换processInfo
.
import Foundation
for (key, value) in ProcessInfo.processInfo.environment {
print("\(key): \(value)")
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20886 次 |
最近记录: |