Main.bundle.infoDictionary返回我空字典

时间:2019-01-11 08:22:26

标签: ios swift xcode module nsbundle

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

在网络管理器Bundle.main.infoDictionary?["CFBundleShortVersionString"]的初始化调用期间,由于infoDictionary为空,尽管已装入Main bundle。

4 个答案:

答案 0 :(得分:1)

尝试一下:

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

答案 1 :(得分:0)

if let version = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
    print(version)
}

您可以尝试一下。

答案 2 :(得分:0)

您可以使用以下扩展名

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

然后像这样使用它:

Bundle.main.versionNumber

答案 3 :(得分:-1)

现在有一个访问器,“ object(forInfoDictionaryKey :()”)为您提供了此功能:

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

虽然有点长。 :-)