2010-07-23 10 views
30

मेरी परियोजना में बहु-लक्ष्य हैं। सामान को सेट करने के लिए प्रत्येक लक्ष्य की अपनी Class फ़ाइल होती है। मैं उस लक्ष्य सेटिंग में Class नाम स्टोर करना चाहता हूं (Info.plist या लक्ष्य की बिल्डिंग सेटिंग)। ताकि मैं परिभाषित कर सकूं कि इस सेटिंग के आधार पर मुझे प्रत्येक लक्ष्य में किस वर्ग का उपयोग करना है।आईफोन: कोड द्वारा लक्ष्य की सेटिंग में उपयोगकर्ता परिभाषित चर प्राप्त करें?

this question के अनुसार, मैंने प्रत्येक लक्ष्य की बिल्डिंग सेटिंग में "लक्ष्य-विशिष्ट User Defined चर" रखा है।

लेकिन मुझे नहीं पता कि यह मेरे कोड में वापस कैसे प्राप्त करें?

+0

कौन सा सेटिंग को लक्षित आप मतलब है:

इसके बाद आप इस सेटिंग को एक्सेस कर सकते हैं? निर्माण सेटिंग्स? Info.plist? आपने चर सेट किया था? – tonklon

+0

मैंने इसे लक्ष्य के निर्माण सेटिंग में रखा है। – KONG

उत्तर

65

रूप Info.plist फ़ाइल बहुत preprocessed है, तो आप इस दृष्टिकोण का उपयोग कर सकते हैं:

अपने निर्माण सेटिंग्स में एक उपयोगकर्ता द्वारा निर्धारित सेटिंग परिभाषित करें उदाहरण के लिए CLASS_NAME। और आपकी Info.plist-file की कुंजी। कुंजी CLASS_NAME नाम दें और मान को ${CLASS_NAME} पर सेट करें।

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"]; 
9

आप सीधे बिल्ड सेटिंग्स में परिभाषित चर का उपयोग नहीं कर सकते हैं। इन चर का उपयोग निर्माण उपकरण द्वारा किया जाना है।

इसके बजाय प्रीप्रोसेसर मैक्रोज़ वैरिएबल में प्रीप्रोसेसर मैक्रो को 'MYVAR = 5' जैसे परिभाषित करें। ,

#if MYVAR==5 
    //Do something 
#endif 

कृपया ध्यान दें कि इन भाव के मूल्यांकन रनटाइम पर निर्माण समय में होता नहीं: आप की तरह अपने कोड में इन मैक्रो पहुँच सकते हैं।

यह मूल्य के लिए देखभाल किए बिना मैक्रो को परिभाषित करने के लिए बहुत ही सामान्य उपयोग है। उदाहरण के लिए रिलीज बिल्ड सेटिंग्स में डीबग बिल्ड सेटिंग्स और 'रिलीज = 1' में 'DEBUG = 1' को परिभाषित करें।

फिर आप #ifdef का उपयोग कर परीक्षण कर सकते हैं या #ifndef

#ifdef DEBUG 
    // Log 
#endif 
+0

ओह, मैं देखता हूं। Info.plist के बारे में कैसे। क्या मैं वहां 'कक्षा' नाम संग्रहीत कर सकता हूं, और इसे कोड से प्राप्त कर सकता हूं? – KONG

+0

मैंने info.plist का उपयोग करने के लिए एक और जवाब जोड़ा है। – tonklon

+4

अगर मैं अच्छी तरह से समझता हूं, तो निर्माण सेटिंग मान को सीधे पुनर्प्राप्त करने का कोई तरीका नहीं है? क्योंकि रहस्यों और चाबियों के लिए (प्रति कॉन्फ़िगरेशन में परिवर्तन) यह प्लिस्ट के माध्यम से पारित होना बेहतर होगा। – Rivera

संबंधित मुद्दे