답변:
다음과 같이 버전 및 빌드 번호를 얻을 수 있습니다.
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
또는 Objective-C에서
NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
카테고리에 다음과 같은 방법이 있습니다 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))"
}
}
요지 : https://gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b
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;
}
요점 : https://gist.github.com/ashleymills/c37efb46c9dbef73d5dd
(NSString *)kCFBundleVersionKey
보다는을 사용 하는 것이 좋습니다 @"CFBundleVersion"
. 입력 시간이 길어도 (자동 완성이 도움이 될 것입니다) 상수이므로 컴파일 타임에 확인됩니다.
NSBundle
대신 이 확장을 설정 하는 것이 더 정확 UIApplication
합니다. 정적 호출을 인스턴스 호출로 대체 할 수도 있습니다.
UIApplication
반환 된 정보가 응용 프로그램에 관한 것이므로 개념적으로이에 맞습니다 . 또한 이것은 main
번들 에만 적용됩니다. 번들에서 인스턴스 메소드로 만드는 것은 의미가 없습니다.
build
말했을 때 의미 했습니까 appBundle
?
목표 C에서 :
1) 앱 버전을 얻으려면 다음을 사용해야합니다.
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
2) 빌드 버전을 얻으려면 다음을 사용해야합니다.
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
내 오픈 소스 프로젝트 인 App Update Tracker 는 다음과 같은 클래스 메소드 형식으로이 기능을 제공합니다.
+ (NSString *)getShortVersionString
+ (NSString *)getLongVersionString
다음과 같이 사용하십시오.
#import "AppUpdateTracker.h"
NSLog(@"short version: %@", [AppUpdateTracker getShortVersionString]);
NSLog(@"long version: %@", [AppUpdateTracker getLongVersionString]);
따라서 여기 둘 다에 대한 Swift 버전이 있습니다.
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
이 저장소에 포함되어 있으므로 확인하십시오.