[iphone] Info.plist에서 버전 읽기

Info.plist의 번들 버전 정보를 내 코드 (가급적이면 문자열)로 읽고 싶습니다. 어떻게 할 수 있습니까?



답변

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

[[NSBundle mainBundle] infoDictionary]

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

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

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


답변

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


답변

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

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

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

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


답변

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

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


답변

스위프트 3 :

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String


답변