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

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

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

【问题讨论】:

    标签: ios swift xcode module nsbundle


    【解决方案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)
          }
          

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

          【讨论】:

            猜你喜欢
            • 2021-04-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-30
            • 2015-01-01
            • 2021-10-01
            • 2016-03-14
            相关资源
            最近更新 更多