Istnieją 2 liczby!
Numer wersji marketingowej jest przeznaczony dla klientów, nazywany numerem wersji . Zaczyna się od wersji 1.0 i przechodzi do głównych aktualizacji do 2.0 , 3.0 , do drobnych aktualizacji do 1.1 , 1.2 i do poprawek błędów do 1.0.1 , 1.0.2 . Liczba ta dotyczy wersji i nowych funkcji. Nie musi kończyć się na 9, 1.11.23 to rozsądny numer wersji.
Numer kompilacji jest głównie wewnętrzny numer buduje , które zostały wykonane do tej pory. Ale niektórzy używają innych liczb, takich jak numer gałęzi repozytorium lub jego numer zatwierdzenia. Ta liczba powinna być unikatowa, aby rozróżnić różne kompilacje, które mają tylko niewielkie przyrostowe zmiany.
Aby uzyskać numer wersji :
Cel C:
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
Szybki <3,0:
let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
Swift 3.0+ (testowany z 5.0):
let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
Aby uzyskać numer kompilacji :
Cel C:
NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Szybki <3,0:
let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
Swift 3.0+ (testowany do 5.0):
let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
Jeśli chcesz mieć oba w jednym:
Najpierw użyj powyższych wierszy, a następnie następnego.
Cel C:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
Swift (testowany do 5.0):
let versionAndBuildNumber: String = "\(appVersionString) (\(buildNumber))"
Uwagi:
Wartości w pakiecie głównym nie zawsze są obecne, na przykład w aplikacji wiersza poleceń nie ma CFBundleShortVersionString
lub CFBundleVersion
, więc metody zwrócą nil
i ulegną awarii, ponieważ w kodzie tworzy niepoprawny downcast. Ale w zwykłych aplikacjach Cocoa iOS i Mac te wartości są zdefiniowane i nie zostaną usunięte.
Jest to testowane z Xcode w wersji 7.3 (7D175) . Numer kompilacji jest często zapisywany w nawiasach / nawiasach klamrowych. Numer kompilacji jest szesnastkowy lub dziesiętny.
W Xcode możesz automatycznie zwiększać numer kompilacji jako liczbę dziesiętną , umieszczając następujące elementy w Run script
fazie kompilacji w ustawieniach projektu
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Dla numeru kompilacji szesnastkowej użyj tego skryptu
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Dla Xcode
wykonaj następujące czynności:
Krok 1
Krok 2
Krok 3
Bundle.main.object(forInfoDictionaryKey: "...")
teraz.Nie musisz niczego zmieniać w swoim projekcie ani w Xcode. Oto wersja Swift dla obu osobno:
Jest zawarte w tym repozytorium, sprawdź to:
https://github.com/goktugyil/EZSwiftExtensions
źródło
Bundle.main.object(forInfoDictionaryKey: "...")
teraz.Tutaj ten sam kod dla Swift 3 :
źródło
Bundle.main
miałinfoDictionary
dla mnie pusty ; może dlatego, że robię to w ramach, a nie w pliku wykonywalnym lub aplikacji?Bundle(for: MyClass.self)
zawiera oczekiwane wartości.Programowe wyświetlanie wersji i numeru kompilacji - Swift 4.0
źródło
Możesz również użyć like
Następnie możesz użyć dowolnego miejsca, gdy deklarujesz globalnie.
Wynik:
źródło
Zrobiłem rozszerzenie dla Bundle, więc będzie łatwe w użyciu
źródło