我在Xcode中使用Swift 3.0编写了一些涉及登录页面的代码。 我想设置一个名为CurrentUser的环境变量。有没有办法在方案中定义环境var并在我登录后以编程方式设置变量的值?
答案 0 :(得分:2)
不。 NSProcessInfo
的{{1}}属性是只读的。这是有充分理由的。
使用Swift,您知道可以定义在整个应用程序中共享的全局变量,对吧?为什么你需要搞乱env?
请参阅:https://developer.apple.com/documentation/foundation/nsprocessinfo/1417911-environment?language=objc
BTW,我们通常使用Keychain存储用户名和密码等登录信息,因为它是一个安全的,系统提供的,持久的键值数据存储区。答案 1 :(得分:2)
是的,您可以以编程方式为当前进程设置环境变量(默认情况下,它也将由子进程继承)。您可以调用setenv()
函数来执行此操作。
此将影响environment
NSProcessInfo
属性getenv()
的未来查询返回的字典。当然,您也可以使用AuthenticationUtil.runAs(new RunAsWork<Void>() {
@Override
public Void doWork() throws Exception {
try{
behaviourFilter.disableBehaviour(mainNodeRef, ContentModel.ASPECT_AUDITABLE);
serviceRegistry.getNodeService().setProperty(mainNodeRef, ContentModel.PROP_MODIFIED, migValuesVO.getModified());
serviceRegistry.getNodeService().setProperty(mainNodeRef, ContentModel.PROP_MODIFIER, migValuesVO.getModifier());
}
finally{
behaviourFilter.enableBehaviour(mainNodeRef, ContentModel.ASPECT_AUDITABLE);
}
return null;
}
}, ADMIN_USER_NAME);
函数检索值。