从Info.plist中阅读版本
我想从Info.plist中读取捆绑版本信息到我的代码中,最好是作为一个string。 我怎样才能做到这一点?
你可以用你的字典来读你的Info.plist
[[NSBundle mainBundle] infoDictionary]
而且你可以很容易地通过CFBundleVersion
键获取版本。
最后,你可以得到的版本
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
我知道,追求和答案已经过去了一段时间。
自iOS8以来接受的答案可能无法正常工作。
这是现在做的新方法:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
对于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)") }
现在在iOS 8中,这两个字段都是必需的。 早期它没有CFBundleShortVersionString
。 但现在它是一个必需的plist字段提交任何应用程序在应用程序商店。 和kCFBundleVersionKey
进行比较,上传每个新的版本,必须按增量顺序。 特别为TestFlight构build。 我这样做,
NSString * version = nil; version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; if (!version) { version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; }
Swift 3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String