2011-10-31 8 views
35

Mi chiedo se esiste un modo per ottenere la propria versione dell'app in codice dopo averla inserita nella scheda "Riepilogo" in xCode. Un modo sembra essere quello di cercare Info.plist per CFBundleVersion chiave, ma c'è un altro, più facile, più conveniente?Come ottenere la propria versione dell'app da xcode?

+0

possibile duplicato di [Come può la mia app per iphone rilevare il proprio numero di versione?] (Http://stackoverflow.com/questions/458632/how-can-my-iphone-app-detect-its-own-version-number) –

risposta

113

È possibile trovarlo nel pacchetto principale. Penso che sia qualcosa di simile:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 
+0

Sì, ho appena trovato un blog (http://pigtailsoft.com/blog/?p=35) che lo afferma. Grazie comunque! Accetta la risposta in 6 minuti :) –

+11

Grazie, ma '@" CFBundleVersion "' restituisce la build non la versione. Dovresti ottenere questo oggetto: '@" CFBundleShortVersionString "' – IgniteCoders

12
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 
27

Io di solito uso il numero di build (CFBundleVersion) per tenere traccia di, beh, il numero di build e il numero di versione (CFBundleShortVersionString) per scopi di marketing. Uso uno script di esecuzione per incrementare automaticamente il mio numero di build e aggiorno manualmente il numero di versione prima di ogni nuova versione. Quindi, se si desidera includere il numero di versione attuale nel codice in contrasto con il numero di build, usare questo:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] 

o

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

Ecco lo script percorso che incrementa il numero di build per chiunque sia interessato :

#!/bin/bash 

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") 
buildNumber=$(($buildNumber + 1)) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}" 
2

per SWIFT:

Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") 
Problemi correlati