Desidero leggere le informazioni sulla versione del pacchetto da Info.plist nel mio codice, preferibilmente come una stringa. Come posso fare questo?Leggi versione da Info.plist
risposta
Puoi leggere il tuo Info.plist come un dizionario con
[[NSBundle mainBundle] infoDictionary]
E si può facilmente ottenere la versione al CFBundleVersion
chiave in quel modo.
Infine, è possibile ottenere la versione con
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
So che è passato del tempo da quando la ricerca e la risposta.
Poiché iOS8 la risposta accettata potrebbe non funzionare.
Questo è il nuovo modo per farlo ora:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
Hai un link al motivo per cui è così? –
Ora in iOS 8 sono necessari entrambi i campi. In precedenza funziona senza lo CFBundleShortVersionString
. Ma ora è necessario un campo Plist per inviare qualsiasi app nell'app store. E kCFBundleVersionKey
viene confrontato per il caricamento di ogni nuova build, che deve essere in ordine incrementale. Specialmente per le build di TestFlight. Lo faccio in questo modo,
NSString * version = nil;
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if (!version) {
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
}
Grazie .. ** version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleShortVersionString"]; ** ha funzionato per me – swiftBoy
@RDC grazie. –
per gli utenti Swift:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
print("version is : \(version)")
}
per gli utenti Swift3:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
print("version is : \(version)")
}
Swift 3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
Perfetto. È molto più semplice di tutte le linee delle funzioni CF * che stavo usando ... Ero sicuro che ci doveva essere un modo veloce per ottenere il NSDictionary. – Stew
Per il numero di versione, questo non ha importanza, ma per le altre chiavi si potrebbe voler usare 'objectForInfoDictionaryKey:' invece, poiché restituisce il valore localizzato se disponibile: '[[NSBundle mainBundle] objectForInfoDictionaryKey: @" CFBundleDisplayName "]' – Zargony
Nota in Xcode4 se guardi il pannello di riepilogo del target vedrai i campi di Version & Build. 'CFBundleVersion' è stato riproposto come Build e Version è' CFBundleShortVersionString'. – memmons