Info.plist에서 버전 읽기


답변:


201

Info.plist를 사전으로 읽을 수 있습니다.

[[NSBundle mainBundle] infoDictionary]

그런 CFBundleVersion식으로 키 에서 버전을 쉽게 얻을 수 있습니다 .

마지막으로 다음을 사용하여 버전을 얻을 수 있습니다.

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];

완전한. 그것은 내가 사용했던 모든 CF * 함수 라인보다 훨씬 더 간단합니다. NSDictionary를 얻는 빠른 방법이 있었음에 틀림 없습니다.
Stew

16
버전 번호의 경우 중요하지 않지만 다른 키의 objectForInfoDictionaryKey:경우 사용 가능한 경우 현지화 된 값을 반환하므로 대신 사용할 수 있습니다.[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
Zargony

20
Xcode4에서 대상의 요약 패널을 보면 버전 및 빌드 필드가 표시됩니다. CFBundleVersion은 빌드로 용도가 변경되었으며 버전은 CFBundleShortVersionString.
memmons

5
그러면 버전 및 빌드 번호를 모두 가져 와서 함께 형식을 지정합니다. NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
Graham Perks

objectForKey 메서드의 키로 CFBundleShortVersionString을 사용합니다.
ayalcinkaya 2015 년

11

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)")
}

5

의뢰와 답이 어느 정도 흘렀다는 것을 알고 있습니다.

iOS8부터 허용되는 답변이 작동하지 않을 수 있습니다.

이것은 이제 새로운 방법입니다.

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);

6
그 이유에 대한 링크가 있습니까?
Ian Warburton

4

이제 iOS 8에서는 두 필드가 모두 필요합니다. 이전에는 CFBundleShortVersionString. 하지만 이제는 앱 스토어에서 앱을 제출하는 데 필요한 plist 필드입니다. 그리고 kCFBundleVersionKey모든 새 빌드를 업로드하기 위해 비교되며, 이는 증분 순서 여야합니다. 특히 TestFlight 빌드 용입니다. 나는 이렇게한다.

NSString * version = nil;
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (!version) {
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    }

감사합니다 .. version = [[NSBundle mainBundle] objectForInfoDictionaryKey : @ "CFBundleShortVersionString"]; 나를 위해 일한
swiftBoy

3

스위프트 3 :

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.