Main.bundle.infoDictionary 向我返回空字典

Posted

技术标签:

【中文标题】Main.bundle.infoDictionary 向我返回空字典【英文标题】:Main.bundle.infoDictionary returns me empty Dictionary 【发布时间】:2019-01-11 08:22:25 【问题描述】:

在我的项目中,我有一个单独的网络代码模块,我需要在每个请求的标头中设置应用程序的版本号。

在网络管理器Bundle.main.infoDictionary?["CFBundleShortVersionString"]的初始化调用期间,尽管加载了主包,但 infoDictionary 为空。

【问题讨论】:

【参考方案1】:

试试这个:

let bundle = Bundle(for: type(of: self))
if let version = bundle.infoDictionary?["CFBundleShortVersionString"] as? String 
        print(version)

【讨论】:

【参考方案2】:

您可以使用以下扩展名

extension Bundle 
    var versionNumber: String? 
        return infoDictionary?["CFBundleShortVersionString"] as? String
    
    var buildNumber: String? 
        return infoDictionary?["CFBundleVersion"] as? String
    

然后像这样使用它:

Bundle.main.versionNumber

【讨论】:

【参考方案3】:
if let version = Bundle.main.infoDictionary?["CFBundleVersion"] as? String 
    print(version)

你可以试试这个。

【讨论】:

【参考方案4】:

现在有一个访问器,“object(forInfoDictionaryKey:()”,它给你这个:

if let version = Bundle.main.object(forInfoDictionaryKey:"CFBundleShortVersionString") as? String 
  print(version)

虽然它实际上更长。 :-)

【讨论】:

以上是关于Main.bundle.infoDictionary 向我返回空字典的主要内容,如果未能解决你的问题,请参考以下文章