Saya ingin membaca info versi bundel dari Info.plist ke dalam kode saya, lebih disukai sebagai string. Bagaimana saya bisa melakukan ini?
Saya ingin membaca info versi bundel dari Info.plist ke dalam kode saya, lebih disukai sebagai string. Bagaimana saya bisa melakukan ini?
Jawaban:
Anda dapat membaca Info.plist Anda sebagai kamus dengan
[[NSBundle mainBundle] infoDictionary]
Dan Anda bisa dengan mudah mendapatkan versi CFBundleVersion
kunci dengan cara itu.
Terakhir, Anda bisa mendapatkan versinya dengan
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
sebagai gantinya, karena mengembalikan nilai yang dilokalkan jika tersedia:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
CFBundleVersion
telah diubah fungsinya menjadi Build dan Version CFBundleShortVersionString
.
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
untuk pengguna Swift:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
print("version is : \(version)")
}
untuk pengguna Swift3:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
print("version is : \(version)")
}
Saya tahu bahwa beberapa waktu telah berlalu sejak pencarian dan jawabannya.
Sejak iOS8, jawaban yang diterima mungkin tidak berfungsi.
Ini adalah cara baru untuk melakukannya sekarang:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
Sekarang di iOS 8, kedua bidang tersebut diperlukan. Sebelumnya, ini berfungsi tanpa ekstensi CFBundleShortVersionString
. Tapi sekarang ini adalah bidang plist wajib untuk mengirimkan aplikasi apa pun di toko aplikasi. Dan kCFBundleVersionKey
dibandingkan untuk mengupload setiap build baru, yang harus dalam urutan tambahan. Khusus untuk build TestFlight. Saya melakukannya dengan cara ini,
NSString * version = nil;
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if (!version) {
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
}
Cepat 3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String