我可以在应用程序运行时以编程方式翻转Info.plist值吗?
-
07-07-2019 - |
题
我有兴趣在我的应用程序中使用 SBUsesNetwork
和 UIRequiresPersistentWiFi
键;但是,我想只在使用某组视图控制器时启用它们。有没有办法在应用程序运行时以编程方式翻转这些键值?
解决方案
您无法在运行时修改捆绑包内容,但您没有该目录的写入权限。我不确定是否有办法完全按照自己的意愿行事。
其他提示
我知道您可以通过 NSBundle ,内容如下:
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
从那里你可以创建 NSDictionary
的 mutableCopy
并在其中设置值。在对密钥进行查询时,您必须确保查询 NSDictionary
而不是info.plist文件,但将所有这些都封装到一个处理两者的类中并不难。你的问题。
至于直接修改应用程序的info.plist文件可能存在问题(例如,如果您修改文件,代码签名将失败,您的应用程序将被视为已损坏),但我不确定。
您无法修改Info.plist。似乎没有苹果认可的方式来做你想做的事。
我不认为这会奏效。 [NSBundle mainBundle]有一个指向特定infoDictionary的指针。即使您采用可变副本,NSBundle也不会对我们的新plist有任何了解。还有人试过吗?
Info.plist只不过是一本字典。因此可以编辑。
不隶属于 StackOverflow