我可以以编程方式设置环境变量吗?

时间:2017-10-19 02:08:19

标签: ios swift xcode

我在Xcode中使用Swift 3.0编写了一些涉及登录页面的代码。 我想设置一个名为CurrentUser的环境变量。有没有办法在方案中定义环境var并在我登录后以编程方式设置变量的值?

2 个答案:

答案 0 :(得分:2)

不。 NSProcessInfo的{​​{1}}属性是只读的。这是有充分理由的。

使用Swift,您知道可以定义在整个应用程序中共享的全局变量,对吧?为什么你需要搞乱env?

请参阅:https://developer.apple.com/documentation/foundation/nsprocessinfo/1417911-environment?language=objc

BTW,我们通常使用Keychain存储用户名和密码等登录信息,因为它是一个安全的,系统提供的,持久的键值数据存储区。

退房: https://github.com/evgenyneu/keychain-swift

答案 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); 函数检索值。