2010-10-30 15 views
83

से संस्करण पढ़ें मैं जानकारी के साथ बंडल संस्करण जानकारी को अपने कोड में पढ़ना चाहता हूं, अधिमानतः एक स्ट्रिंग के रूप में। मैं यह कैसे कर सकता हूँ?Info.plist

उत्तर

193

आप

[[NSBundle mainBundle] infoDictionary] 

के साथ एक शब्दकोश के रूप में अपने Info.plist पढ़ सकते हैं और आप आसानी से CFBundleVersion महत्वपूर्ण यह है कि जिस तरह से पर संस्करण प्राप्त कर सकते हैं।

अंत में, आप के साथ

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 
NSString* version = [infoDict objectForKey:@"CFBundleVersion"]; 
+0

बिल्कुल सही। सीएफ * फ़ंक्शंस की सभी पंक्तियों की तुलना में यह बहुत आसान है ... मुझे यकीन था कि NSDictionary प्राप्त करने का एक त्वरित तरीका होना चाहिए। – Stew

+16

संस्करण संख्या के लिए, इससे कोई फर्क नहीं पड़ता, लेकिन अन्य कुंजियों के लिए आप 'objectForInfoDictionaryKey: 'का उपयोग करना चाहेंगे, क्योंकि यह उपलब्ध होने पर स्थानीयकृत मान देता है:' [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleDisplayName"] ' – Zargony

+20

एक्सकोड 4 में नोट यदि आप लक्ष्य के सारांश पैनल को देखते हैं तो आपको संस्करण और बिल्ड फ़ील्ड दिखाई देंगे। 'CFBundleVersion' को बिल्ड और संस्करण होने के लिए पुनर्निर्मित किया गया है' CFBundleShortVersionString' है। – memmons

4

मुझे पता है कि कुछ समय के खोज और जवाब के बाद से पारित कर दिया है संस्करण प्राप्त कर सकते हैं।

चूंकि आईओएस 8 स्वीकृत उत्तर काम नहीं कर सकता है।

यह अब यह करने के लिए नया तरीका है:

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey); 
+6

क्या आपके पास ऐसा लिंक है कि ऐसा क्यों है? –

3

अब iOS 8 में दोनों क्षेत्रों के लिए आवश्यक हैं। इससे पहले यह CFBundleShortVersionString के बिना काम करता है। लेकिन अब ऐप स्टोर में कोई एप सबमिट करने के लिए यह एक आवश्यक प्लिस्ट फील्ड है। और kCFBundleVersionKey की तुलना प्रत्येक नए निर्माण को अपलोड करने के लिए की जाती है, जो कि वृद्धिशील क्रम में होना चाहिए। टेस्टफलाइट के लिए विशेष रूप से बनाता है। मैं इसे इस तरह करते हैं,

NSString * version = nil; 
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 
    if (!version) { 
     version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; 
    } 
+0

धन्यवाद .. ** संस्करण = [[एनएसबंडल मेनबंडल] ऑब्जेक्टफोरइन्फो डिक्शनरी: @ "सीएफबंडलशॉर्टवर्सनस्ट्रिंग"]; ** मेरे लिए काम किया – swiftBoy

+0

@ आरडीसी धन्यवाद। –

6

स्विफ्ट उपयोगकर्ताओं के लिए:

if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") { 
    print("version is : \(version)") 
} 

Swift3 उपयोगकर्ताओं के लिए:

if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") { 
    print("version is : \(version)") 
} 
2

स्विफ्ट 3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String 
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String 
संबंधित मुद्दे