从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