ฉันต้องการอ่านข้อมูลเวอร์ชันบันเดิลจาก Info.plist ลงในโค้ดของฉันโดยเฉพาะอย่างยิ่งเป็นสตริง ฉันจะทำเช่นนี้ได้อย่างไร?
ฉันต้องการอ่านข้อมูลเวอร์ชันบันเดิลจาก Info.plist ลงในโค้ดของฉันโดยเฉพาะอย่างยิ่งเป็นสตริง ฉันจะทำเช่นนี้ได้อย่างไร?
คำตอบ:
คุณสามารถอ่าน Info.plist ของคุณเป็นพจนานุกรมด้วย
[[NSBundle mainBundle] infoDictionary]
และคุณสามารถรับเวอร์ชันได้อย่างง่ายดายCFBundleVersion
ด้วยวิธีนี้
สุดท้ายคุณจะได้รับเวอร์ชันด้วย
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
แทนเนื่องจากจะส่งคืนค่าที่แปลแล้วหากมี:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
CFBundleVersion
ได้รับการ repurposed CFBundleShortVersionString
ที่จะสร้างและเวอร์ชันคือ
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
สำหรับผู้ใช้ Swift:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
print("version is : \(version)")
}
สำหรับผู้ใช้ Swift3:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
print("version is : \(version)")
}
ฉันรู้ว่าเวลาผ่านไปสักพักหนึ่งตั้งแต่การแสวงหาและคำตอบ
เนื่องจาก iOS8 คำตอบที่ยอมรับอาจไม่ทำงาน
นี่เป็นวิธีใหม่ในการดำเนินการทันที:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
ตอนนี้ใน iOS 8 จำเป็นต้องใช้ทั้งสองฟิลด์ ก่อนหน้านี้ใช้งานได้โดยไม่มีไฟล์CFBundleShortVersionString
. แต่ตอนนี้เป็นช่องที่จำเป็นในการส่งแอพใด ๆ ในแอพสโตร์ และkCFBundleVersionKey
มีการเปรียบเทียบสำหรับการอัปโหลดบิวด์ใหม่ทุกรายการซึ่งจะต้องเป็นลำดับที่เพิ่มขึ้น พิเศษสำหรับรุ่น TestFlight ฉันทำแบบนี้
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