How do I get the current version of my iOS project in code?
You can get the version and build numbers as follows:
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! Stringlet build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
or in Objective-C
NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
I have the following methods in a category on UIApplication
:
extension UIApplication { static var appVersion: String { return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String } static var appBuild: String { return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String } static var versionBuild: String { let version = appVersion, build = appBuild return version == build ? "v\(version)" : "v\(version)(\(build))" }}
Gist: https://gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b
Here's the equivalent in Objective-C:
+ (NSString *) appVersion{ return [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"]; }+ (NSString *) build{ return [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];}+ (NSString *) versionBuild{ NSString * version = [self appVersion]; NSString * build = [self build]; NSString * versionBuild = [NSString stringWithFormat: @"v%@", version]; if (![version isEqualToString: build]) { versionBuild = [NSString stringWithFormat: @"%@(%@)", versionBuild, build]; } return versionBuild;}
Gist: https://gist.github.com/ashleymills/c37efb46c9dbef73d5dd
Here's what worked on Xcode 8, Swift 3:
let gAppVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "0"let gAppBuild = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "0"print("Version: \(gAppVersion)")print("Build: \(gAppBuild)")
In Objective C:
1)For getting App version you have to use a:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
2)For getting Build version you have to use a:
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];