można uzyskać wersję i budować liczb następująco:
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
lub w Objective-C
NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
Mam następujące metody w kategorii na UIApplication
:
extension UIApplication {
class func appVersion() -> String {
return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
}
class func appBuild() -> String {
return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
}
class func versionBuild() -> String {
let version = appVersion(), build = appBuild()
return version == build ? "v\(version)" : "v\(version)(\(build))"
}
}
Gist:https://gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b
Oto odpowiednik w 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;
}
Streszczenie:https://gist.github.com/ashleymills/c37efb46c9dbef73d5dd
Można to wykorzystać [ [NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleVersion"] zamiast [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *) kCFBundleVersionKey].Wydaje się, że Former dobrze rymuje się z [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleShortVersionString"]; Więc teraz stało się łatwo zachować w pamięci –
@Duraiamuthan Polecam używanie '(NSString *) kCFBundleVersionKey' zamiast' @ "CFBundleVersion" '. Mimo, że jest już dłuższy typ (automatyczne uzupełnianie pomoże tutaj), ponieważ jest to stała jest sprawdzana podczas kompilacji. –
Btw, byłoby bardziej dokładne uczynienie tego rozszerzenia na 'NSBundle' zamiast' UIApplication' to również pozwoli na zastąpienie połączeń statycznych z instancjami. – Zapko