Írok egy iPhone app. Ez már megjelent, de szeretnék hozzá olyan funkció, ahol a verziószám jelenik meg.
Én inkább nem kell, hogy ezt manuálisan minden verziót kiadás ...
Van egy módja az Objective-C, hogy megtudja, mi a verzió az én app?
Írok egy iPhone app. Ez már megjelent, de szeretnék hozzá olyan funkció, ahol a verziószám jelenik meg.
Én inkább nem kell, hogy ezt manuálisan minden verziót kiadás ...
Van egy módja az Objective-C, hogy megtudja, mi a verzió az én app?
Ahogy itt leírt , azt használja egy script, hogy átírják a header fájlt a jelenlegi Subversion változat számát. Ez a felülvizsgálat száma van tárolva a kRevisionNumber állandó. Tudok majd elérni a verzió és revízió számot valami hasonló a következő:
[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]
amely létrehoz egy húr a formátum „Version 1.0 (51)”.
Építve Brad Larson választ, ha nagyobb és kisebb változata info tárolt információ plist (ahogy én is tettem egy adott projekt), ez jól működött nekem:
- (NSString *)appNameAndVersionNumberDisplayString {
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appDisplayName = [infoDictionary objectForKey:@"CFBundleDisplayName"];
NSString *majorVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
NSString *minorVersion = [infoDictionary objectForKey:@"CFBundleVersion"];
return [NSString stringWithFormat:@"%@, Version %@ (%@)",
appDisplayName, majorVersion, minorVersion];
}
Most fordulatszámú kisebb változata kézzel lehet a fájdalom, és így egy repository revízió száma trükk ideális. Ha nem kötődik, hogy (ahogy én sem), a fenti kódrészlet hasznos lehet. Azt is előveszi az alkalmazás megjelenített nevét.
Swift verzió külön-külön:
Swift 3
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
Swift 2
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
A ebbe repo, nézd meg:
Ez az, amit tettem én kérelmet
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
Remélhetőleg ez az egyszerű válasz segít valaki ...
Megadhatja a CFBundleShortVersionStringhúr a plist.info és olvastam, hogy más programból a biztosított API .
Két dolog van - építeni változat és alkalmazás verziója.
Ahhoz, hogy App Változat:
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Ahhoz, hogy épít változat:
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
A tömör módja egy változata string XYZ formátum:
[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]
Vagy, csak XY:
[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]
Mindkét töredék vissza húrok, hogy akkor rendelhet a címkéhez objektum szöveges tulajdonság, pl
myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
Próbálja meg a szótárban, mint: -
NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];
NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
Olvassa el a info.plist iratai az alkalmazást, és hogy az érték a legfontosabb CFBundleShortVersionString. Olvasás info.plist kapsz egy NSDictionary objektum
Ha szüksége van egy kombinációja a két változat és épít num , itt egy rövid utat a Swift 3 :
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"]!
let buildNum = Bundle.main.infoDictionary!["CFBundleVersion"]!
let versionInfo = "\(appVersion) (build \(buildNum))"
// versionInfo is now something like "2.3.0 (build 17)"
Hozzáadása as! Stringa végén vagy a appVersionvagy a buildNumvonal, hogy csak azt a részét, mint egy Stringtárgyat. Nincs szükség, hogy bár ha keres a teljes versionInfo.
Remélem ez segít!
func getAppVersion() -> String {
let dictionary = Bundle.main.infoDictionary!
let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
let buildValue = dictionary["CFBundleVersion"] ?? "0"
return "\(versionValue) (build \(buildValue))"
}
Ennek alapján @rajat chauhan válasz nélkül kénytelen leadott String.
Meg lehet próbálni ezt a módszert:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Használhatja a infoDictionary, amely megkapja a verzió részleteket info.plist tőled kb. Ez a kód működik a gyors 3. Csak hívja ezt a módszert, és megjeleníti a verzió bármilyen előnyös UI elem.
Swift-3
func getVersion() -> String {
let dictionary = Bundle.main.infoDictionary!
let version = dictionary["CFBundleShortVersionString"] as! String
let build = dictionary["CFBundleVersion"] as! String
return "v\(version).\(build)"
}
Ez egy jó dolog, hogy kezelni felülvizsgálatával rendszer. Így, ha kap egy hibajelentést a felhasználó, akkor nézd meg, hogy felülvizsgálata kódot, és (remélhetőleg) reprodukálni a hibát futó pontosan ugyanazt a kódot, mint a felhasználó.
Az ötlet az, hogy minden alkalommal, amikor nem egy épít, akkor fut egy script, hogy megkapja a jelenlegi felülvizsgálata számát a kódot, és frissíti a fájlt a projekten belül (általában valamilyen formában token csere). Ezután egy hiba kezelési rutin, amely mindig tartalmazza a felülvizsgálat számát a hiba kimenet, vagy akkor megjeleníti azt egy „A” oldalon.