it-swarm.com.de

Version aus Info.plist lesen

Ich möchte die Bundle-Versionsinformationen aus Info.plist in meinen Code einlesen, vorzugsweise als Zeichenfolge. Wie kann ich das machen?

86
John Smith

Sie können Ihre Info.plist als Wörterbuch mit lesen

[[NSBundle mainBundle] infoDictionary]

Auf diese Weise können Sie die Version einfach über die Taste CFBundleVersion abrufen.

Abschließend können Sie die Version mit herunterladen

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

für Swift Benutzer:

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

für Swift3-Benutzer:

if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
    print("version is : \(version)")
}
10
ayalcinkaya

Ich weiß, dass seit der Suche und der Antwort einige Zeit vergangen ist.

Seit iOS 8 funktioniert die akzeptierte Antwort möglicherweise nicht mehr.

Dies ist der neue Weg, es jetzt zu tun:

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

In iOS 8 sind nun beide Felder erforderlich. Früher funktioniert es ohne das CFBundleShortVersionString. Jetzt ist es jedoch ein Pflichtfeld, eine App im App Store einzureichen. Und kCFBundleVersionKey wird verglichen, um jeden neuen Build hochzuladen, der in inkrementeller Reihenfolge sein muss. Speziell für TestFlight-Builds. Ich mache es so,

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

Swift 3:

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