Main.bundle.infoDictionary returns 我空字典
Main.bundle.infoDictionary returns me empty Dictionary
在我的项目中,我有一个单独的网络代码模块,我需要在每个请求的 header 中设置应用程序的版本号。
在网络管理器的初始化调用期间Bundle.main.infoDictionary?["CFBundleShortVersionString"]
尽管主包已加载,但 infoDictionary 为空。
if let version = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
print(version)
}
你可以试试这个。
您可以使用以下扩展程序
extension Bundle {
var versionNumber: String? {
return infoDictionary?["CFBundleShortVersionString"] as? String
}
var buildNumber: String? {
return infoDictionary?["CFBundleVersion"] as? String
}
}
然后像这样使用它:
Bundle.main.versionNumber
试试这个:
let bundle = Bundle(for: type(of: self))
if let version = bundle.infoDictionary?["CFBundleShortVersionString"] as? String {
print(version)
}
现在有一个访问器,“object(forInfoDictionaryKey:()”,它给你这个:
if let version = Bundle.main.object(forInfoDictionaryKey:"CFBundleShortVersionString") as? String {
print(version)
}
不过实际上更长了。 :-)
在我的项目中,我有一个单独的网络代码模块,我需要在每个请求的 header 中设置应用程序的版本号。
在网络管理器的初始化调用期间Bundle.main.infoDictionary?["CFBundleShortVersionString"]
尽管主包已加载,但 infoDictionary 为空。
if let version = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
print(version)
}
你可以试试这个。
您可以使用以下扩展程序
extension Bundle {
var versionNumber: String? {
return infoDictionary?["CFBundleShortVersionString"] as? String
}
var buildNumber: String? {
return infoDictionary?["CFBundleVersion"] as? String
}
}
然后像这样使用它:
Bundle.main.versionNumber
试试这个:
let bundle = Bundle(for: type(of: self))
if let version = bundle.infoDictionary?["CFBundleShortVersionString"] as? String {
print(version)
}
现在有一个访问器,“object(forInfoDictionaryKey:()”,它给你这个:
if let version = Bundle.main.object(forInfoDictionaryKey:"CFBundleShortVersionString") as? String {
print(version)
}
不过实际上更长了。 :-)