programing

Info.plist에서 버전 읽기

lovejava 2023. 8. 7. 22:16

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모든 새 빌드를 업로드하기 위해 비교되며, 이는 증분 순서여야 합니다.특히 테스트 비행 빌드용입니다.이런 식으로 합니다.

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

언급URL : https://stackoverflow.com/questions/4059101/read-version-from-info-plist