Read version from Info.plist

后端 未结 5 1482
北荒
北荒 2021-01-30 02:49

I want to read the bundle version info from Info.plist into my code, preferably as a string. How can I do this?

相关标签:
5条回答
  • 2021-01-30 03:17

    I know that some time has passed since the quest and the answer.

    Since iOS8 the accepted answer might not work.

    This is the new way to do it now:

    NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
    
    0 讨论(0)
  • 2021-01-30 03:25

    You can read your Info.plist as a dictionary with

    [[NSBundle mainBundle] infoDictionary]
    

    And you can easily get the version at the CFBundleVersion key that way.

    Finally, you can get the version with

    NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
    NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
    
    0 讨论(0)
  • 2021-01-30 03:27

    for Swift users:

    if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
        print("version is : \(version)")
    }
    

    for Swift3 users:

    if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
        print("version is : \(version)")
    }
    
    0 讨论(0)
  • 2021-01-30 03:30

    Now in iOS 8 both fields are necessary. Earlier it works without the CFBundleShortVersionString. But now it is a required plist field to submit any app in app store. And kCFBundleVersionKey is compared for uploading every new build, which must be in incremental order. Specially for TestFlight builds. I do it this way,

    NSString * version = nil;
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
        if (!version) {
            version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
        }
    
    0 讨论(0)
  • 2021-01-30 03:42

    Swift 3:

    let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
    let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
    
    0 讨论(0)
提交回复
热议问题