कई स्थितियों में, आपको वास्तव में सशर्त संकलन की आवश्यकता नहीं है ; आपको बस सशर्त व्यवहार की आवश्यकता है जिसे आप चालू और बंद कर सकते हैं। उसके लिए, आप एक पर्यावरण चर का उपयोग कर सकते हैं। इसका बहुत बड़ा फायदा है कि आपको वास्तव में recompile नहीं करना है।
आप योजना के संपादक में, पर्यावरण चर को सेट कर सकते हैं और आसानी से इसे चालू या बंद कर सकते हैं:
आप NSProcessInfo के साथ पर्यावरण चर प्राप्त कर सकते हैं:
let dic = NSProcessInfo.processInfo().environment
if dic["TRIPLE"] != nil {
// ... do secret stuff here ...
}
यहाँ एक वास्तविक जीवन उदाहरण है। मेरा ऐप केवल डिवाइस पर चलता है, क्योंकि यह संगीत लाइब्रेरी का उपयोग करता है, जो सिम्युलेटर पर मौजूद नहीं है। फिर, मेरे पास जो डिवाइस नहीं हैं, उसके लिए सिम्युलेटर पर स्क्रीन शॉट्स लेने के लिए कैसे? उन स्क्रीन शॉट्स के बिना, मैं AppStore को प्रस्तुत नहीं कर सकता।
मुझे नकली डेटा और इसे संसाधित करने का एक अलग तरीका चाहिए । मेरे पास दो पर्यावरण चर हैं: एक, जो जब स्विच किया जाता है, तो ऐप को मेरे डिवाइस पर चलने के दौरान वास्तविक डेटा से नकली डेटा उत्पन्न करने के लिए कहता है; दूसरा, जिसे स्विच करने पर, सिम्युलेटर पर चलते समय नकली डेटा (अनुपस्थित संगीत लाइब्रेरी नहीं) का उपयोग करता है। उन सभी विशेष मोड को चालू / बंद करना स्कीम एडिटर में पर्यावरण चर चेकबॉक्स के लिए आसान है। और बोनस यह है कि मैं गलती से उन्हें अपने ऐप स्टोर के निर्माण में उपयोग नहीं कर सकता, क्योंकि संग्रह में कोई पर्यावरण चर नहीं है।