আইওএস: কোডে অ্যাপ্লিকেশন-ইনফরমেশন.পিস্টের ভেরিয়েবলগুলি অ্যাক্সেস করুন


103

আমি একটি ইউনিভার্সাল অ্যাপে কাজ করছি এবং আমার কোডটিতে অ্যাপ্লিকেশন info

কারণ: আমি স্টোরিবোর্ড থেকে একটি ইউআইভিউ কনট্রোলারকে গতিশীলভাবে ইনস্ট্যান্ট করি:

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];

এখন, উপরে স্টোরবোর্ডের নাম @ "মেইনস্টিরিবোর্ড_আইফোন" রাখা কুরুচিপূর্ণ।

আমি এরকম কিছু করতে চাই:

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:appInfo.mainStoryboardBaseNamePhone bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];

যেখানে appInfo সম্ভবত অ্যাপ্লিকেশন-ইনফো.লাইস্টের সমস্ত মানগুলির একটি এনএসডি অভিধান হতে পারে

উত্তর:


253

আপনার প্রকল্পের জন্য info.plist থেকে বৈশিষ্ট্যগুলি নিম্নলিখিত দ্বারা সরাসরি অ্যাক্সেসযোগ্য ...

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

উদাহরণস্বরূপ সংস্করণ নম্বর পেতে আপনি নিম্নলিখিতটি করতে পারেন

NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

একটি গোটাচা আছে যে সংস্করণ নম্বরটিতে এখন তথ্য.পিস্টে দুটি বৈশিষ্ট্য রয়েছে - তবে আপনি কী ধারণা পাবেন? যদি আপনি আপনার info.plistটিকে উত্স কোড হিসাবে দেখতে পান (ডান ক্লিক করুন তথ্য.পল্লিস্ট - হিসাবে খুলুন নির্বাচন করুন) তবে আপনি ব্যবহার করতে পারেন এমন সমস্ত কী নাম দেখতে পাবেন।


5
এই পোস্টে @Answerbot উল্লেখ হিসাবে: stackoverflow.com/a/4059118/1210822 : "CFBundleVersion বিল্ড হতে পরে সেটির হয়েছে এবং সংস্করণ CFBundleShortVersionString হল" plist থেকে সংস্করণ সংখ্যা পুনরুদ্ধারের জন্য, তাই এখন, আমরা ব্যবহার করা প্রয়োজন: NSString * সংস্করণ = [[এনএসবান্ডেল মেইনবান্ডেল] অবজেক্টফোর্ডফোর্ডোরি কে: @ "সিএফবান্ডেলশোর্ট ভার্সনস্ট্রিং"];
Sonoshin

১১.৩ এর জন্য এটি কাজ করে না, কারণ এনএসবান্ডেলটির নতুন নামকরণ করা হয়েছিল এবং নতুন বান্ডেল এটি এখনও অন্তর্ভুক্ত করেনি। Xou একটি আপডেট আছে?
ইয়োভন মার্গগ্রাফ

যদি আমার কাছে এমন একটি এন্টারপ্রাইজ আইওএস অ্যাপ থাকে যা ওয়েবের মাধ্যমে বিতরণ করা হয় তবে আমি কী পিআইএলএসটি ফাইলটিতে কী / মান জোড় যুক্ত করতে পারি এবং পরে ডাউনলোডের সময় অ্যাপ্লিকেশন থেকে সেই মানগুলি পড়তে পারি?
ব্রেন্ট

কীভাবে আমরা অ্যাপডেলিগেট.এম থেকে সিএফবান্ডেল ভার্সনের মান আপডেট করতে পারি?
প্রাগণেশ


12

ভাল আপনি খুব সহজেই তথ্য.প্লেস্ট অ্যাক্সেস করতে পারেন:

স্টোরিবোর্ডের নাম পাওয়া:

NSString *storyboard  = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];

নিশ্চিত নয় যে এটি কোনও আইপ্যাডে রয়েছে কিনা এটি সনাক্ত করবে এবং এটি UIMainStoryboardFile~ipadকী ইনস্টলড ব্যবহার করা উচিত ।


6
এক্সকোড ডিভাইসের উপর নির্ভর করে আইফোন / আইপ্যাড স্টোরিবোর্ড ফাইলগুলির সাথে স্বয়ংক্রিয়ভাবে 'ইউআইমাইনস্টিরিবোর্ডফিল' কীটি পপুলেট করে :)
শারলক


6

আপনি এনএসবান্ডলে তথ্য অভিধানের পদ্ধতিটিও ব্যবহার করতে পারেন:

NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.