তথ্য.পিস্টলিস্ট থেকে সংস্করণ পড়ুন


91

আমি আমার কোডে তথ্য.প্লেস্ট থেকে বান্ডিল সংস্করণ তথ্যটি পড়তে চাই, পছন্দমতো স্ট্রিং হিসাবে। কিভাবে আমি এটি করতে পারব?

উত্তর:


202

আপনি অভিধান সহ আপনার তথ্য.প্লেস্টটি পড়তে পারেন

[[NSBundle mainBundle] infoDictionary]

এবং আপনি কীভাবে সহজেই সংস্করণটি পেতে পারেন CFBundleVersion

অবশেষে, আপনি এর সাথে সংস্করণটি পেতে পারেন

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

পারফেক্ট এটি আমি যে সিএফ * ফাংশনগুলি ব্যবহার করছিলাম তার সমস্ত লাইনগুলির চেয়ে অনেক সহজ ... আমি নিশ্চিত যে এনএসডিকোরিয়ানের একটি দ্রুত উপায় থাকতে হবে।
স্টিউ

16
সংস্করণ সংখ্যার জন্য, এটি কোনও ব্যাপার নয়, তবে অন্যান্য কীগুলির objectForInfoDictionaryKey:পরিবর্তে আপনি সম্ভবত এটি ব্যবহার করতে চাইতে পারেন , যেহেতু এটি উপলভ্য থাকলে স্থানীয়করণের মানটি ফেরত দেয়:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
জারগনি

20
আপনি যদি লক্ষ্যটির সংক্ষিপ্ত প্যানেলটি লক্ষ্য করেন তবে এক্সকোড 4-এ দ্রষ্টব্য আপনি সংস্করণ এবং বিল্ড ক্ষেত্রগুলি দেখতে পাবেন। CFBundleVersionবিল্ড এবং সংস্করণটি হ'ল এটি পুনরায় প্রকাশ করা হয়েছে CFBundleShortVersionString
স্মরণে

4
এটি উভয় সংস্করণ এবং বিল্ড নম্বর আনবে এবং তাদের একসাথে ফর্ম্যাট করবে: NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
গ্রাহাম পার্কস

অবজেক্টেরকি পদ্ধতিতে কী হিসাবে সিএফবান্ডেলশোর্টটি ভার্সন স্ট্রিং ব্যবহার করুন।
আয়লিংকায়ায়

11

সুইফ্ট ব্যবহারকারীদের জন্য:

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

সুইফট 3 ব্যবহারকারীদের জন্য:

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

5

আমি জানি যে অনুসন্ধান এবং উত্তরটি থেকে কিছুটা সময় কেটে গেছে।

IOS8 যেহেতু গৃহীত উত্তরগুলি কাজ করতে পারে না।

এটি এখনই এটি করার নতুন উপায়:

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

6
আপনার কেন একটি লিঙ্ক আছে কেন এটি এমন?
ইয়ান ওয়ারবার্টন

4

আইওএস 8 এ এখন উভয় ক্ষেত্রই প্রয়োজনীয়। আগে এটি ছাড়া কাজ করে CFBundleShortVersionString। তবে এখন অ্যাপ স্টোরটিতে কোনও অ্যাপ্লিকেশন জমা দেওয়ার জন্য প্রয়োজনীয় প্লাস্ট ফিল্ড। এবং kCFBundleVersionKeyপ্রতিটি নতুন বিল্ড আপলোড করার জন্য তুলনা করা হয়, যা অবশ্যই ক্রমবর্ধমান ক্রমে হওয়া উচিত। বিশেষত টেস্টফ্লাইট বিল্ডগুলির জন্য। আমি এটি এইভাবে করি,

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

ধন্যবাদ .. সংস্করণ = [[এনএসবান্ডেল মেইনবান্ডেল] অবজেক্টফোর্নডোডিয়েরিয়ে: @ "সিএফবান্ডেলশার্টভিশন স্ট্রিং"]; আমার জন্য কাজ করেছেন
সুইফটবয়

3

সুইফট 3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.