我想将Info.plist中的包版本信息读入我的代码,最好是作为字符串。我怎么能这样做?
答案 0 :(得分:197)
您可以使用
将您的Info.plist读作字典[[NSBundle mainBundle] infoDictionary]
您可以通过这种方式轻松获取CFBundleVersion
密钥的版本。
最后,您可以使用
获取版本NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
答案 1 :(得分:10)
对于Swift用户:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
print("version is : \(version)")
}
对于Swift3用户:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
print("version is : \(version)")
}
答案 2 :(得分:5)
我知道自任务和答案以来已经过了一段时间。
从iOS8开始,接受的答案可能无效。
这是现在这样做的新方法:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
答案 3 :(得分:4)
现在在iOS 8中,这两个字段都是必需的。之前它没有CFBundleShortVersionString
。但现在,在app store中提交任何应用程序都是必需的plist字段。并且比较kCFBundleVersionKey
以上载每个新构建,其必须按递增顺序。特别适用于TestFlight构建。我是这样做的,
NSString * version = nil;
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if (!version) {
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
}
答案 4 :(得分:3)
斯威夫特3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String