Info.plist'ten paket sürüm bilgilerini koduma, tercihen bir dize olarak okumak istiyorum. Bunu nasıl yapabilirim?
Info.plist'ten paket sürüm bilgilerini koduma, tercihen bir dize olarak okumak istiyorum. Bunu nasıl yapabilirim?
Yanıtlar:
Info.plistinizi bir sözlük olarak okuyabilirsiniz.
[[NSBundle mainBundle] infoDictionary]
Ve CFBundleVersion
bu şekilde anahtardaki sürümü kolayca edinebilirsiniz .
Son olarak, sürümü ile alabilirsiniz.
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
, çünkü mevcutsa yerelleştirilmiş değeri döndürür:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
CFBundleVersion
Build ve Version is olarak yeniden tasarlandı CFBundleShortVersionString
.
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
Swift kullanıcıları için:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
print("version is : \(version)")
}
Swift3 kullanıcıları için:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
print("version is : \(version)")
}
Arayıştan ve yanıttan bu yana biraz zaman geçtiğini biliyorum.
İOS8'den beri kabul edilen cevap işe yaramayabilir.
Bunu şimdi yapmanın yeni yolu şudur:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
Şimdi iOS 8'de her iki alan da gereklidir. Daha önce CFBundleShortVersionString
. Ancak artık uygulama mağazasında herhangi bir uygulamayı göndermek için gerekli bir plist alanıdır. Ve kCFBundleVersionKey
artımlı sırada olması gereken her yeni yapıyı yüklemek için karşılaştırılır. Özellikle TestFlight derlemeleri için. Ben bu şekilde yaparım
NSString * version = nil;
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if (!version) {
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
}
Swift 3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String