2016-08-07 6 views
38

Objective-C में यह कभी कभी स्थिर स्ट्रिंग स्थिरांक उपयोग करने के लिए वैकल्पिक API कुंजियां परिभाषित करने के लिए (उदाहरण के लिए Mixpanel, घबराहट या Crashlytics तरह विश्लेषण पैकेज के लिए विज्ञप्ति और डीबग चाबियाँ के बीच अंतर करने,) उपयोगी था:स्विफ्ट: API कुंजी को लागू करने के लिए प्रीप्रोसेसर ध्वज (जैसे `#if DEBUG`) का उपयोग कैसे करें?

#if DEBUG 
static NSString *const API_KEY = @"KEY_A"; 
#else 
static NSString *const API_KEY = @"KEY_B"; 
#endif 

और उसके बाद। ..

[Analytics startSession:API_KEY]; 

स्विफ्ट कंपाइलर अब प्रीप्रोसेसर का उपयोग नहीं करता है, क्योंकि यह स्विफ्ट में अनुवाद कैसे करता है?

उत्तर

20

से पहले एप्पल, Xcode 8 के रूप में स्विफ्ट पूर्वप्रक्रमक झंडे के लिए पूर्ण समर्थन शामिल है, तो यह अब "अन्य स्विफ्ट झंडे" में इन मूल्यों को निर्धारित करने के लिए आवश्यक है।

नई सेटिंग "सक्रिय संकलन शर्तें", जो पूर्वप्रक्रमक झंडे के स्विफ्ट समकक्ष के लिए उच्च-स्तरीय सहायता प्रदान करता है कहा जाता है। आप इसे "अन्य स्विफ्ट फ्लैग" के समान तरीके से उपयोग करते हैं, सिवाय इसके कि मूल्य को "-D" के साथ प्रीपेड करने की आवश्यकता नहीं है (इसलिए यह केवल थोड़ा क्लीनर है)।

Xcode 8 release notes से:

Active Compilation Conditions एक नई स्विफ्ट संकलक करने के लिए सशर्त संकलन झंडे पारित करने के लिए की स्थापना का निर्माण है। इस सेटिंग के मूल्य के प्रत्येक तत्व - डी के साथ उपसर्ग swiftc के लिए एक ही रास्ता है कि Preprocessor Macros पास के तत्व एक ही उपसर्ग के साथ बजना करने के लिए, गुजरता है।

#if DEBUG 
    let accessToken = "DebugAccessToken" 
#else 
    let accessToken = "ProductionAccessToken" 
#endif 
: (22457329)

enter image description here

तुम इतनी तरह से ऊपर सेटिंग का उपयोग करें

99

UPDATED: Xcode 8 अब समर्थन करता है, यह स्वचालित रूप से, @ ऊपर DanLoewenherz की प्रतिक्रिया देखें।

Xcode 8 करने से पहले, आप अभी भी मैक्रो एक ही तरीके से इस्तेमाल कर सकते हैं:

#if DEBUG 
let apiKey = "KEY_A" 
#else 
let apiKey = "KEY_B" 
#endif 

हालांकि ताकि उन्हें स्विफ्ट द्वारा उठाया जा करने के लिए के लिए में, आप में "अन्य स्विफ्ट झंडे" निर्धारित करने की आवश्यकता आपके को लक्ष्य के सेटिंग बिल्ड:

  • ओपन अपने लक्ष्य के लिए सेटिंग्स बनाएँ "अन्य तेज झंडे"
  • के लिए
  • खोजें मैक्रो आप उपयोग करना चाहते जोड़े, -D झंडा

enter image description here

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