2013-07-19 7 views
5

मेरे पास एक आईओएस एप्लिकेशन है जो रीस्टफुल अनुरोध करता है। मैं अपने सेवा कॉल एंडपॉइंट्स को स्वचालित रूप से बदलना चाहता हूं कि मैं ए पर वेब सेवा रीस्टफुल अनुरोध भेज रहा हूं या नहीं। विकास सर्वर बी। स्टेजिंग सर्वर सी। उत्पादन सर्वरएक्सकोड उद्देश्य सी मैक्रोज़ और बिल्ड सेटिंग्स, देव और स्टेजिंग और उत्पादन स्विचिंग - एक पूर्ण उदाहरण?

उदाहरण के लिए,

a. dev url: http://www.dev.camerakingphotos/getAllPhotos 
b. test url: http://www.test.camerakingphotos/getAllPhotos 
c. production url: http://www.camerkingphotos/getAllPhotos 
  1. मैं अपने उत्पादन सर्वर बनाम विकास सर्वर आसानी से करने के लिए URL स्विच करने के लिए XCode बताऊँ? क्या यह एक बिल्डिंग सेटिंग है, एक प्रीप्रोसेसर मैक्रो, एक योजना, या एक नया लक्ष्य (मुझे लगता है कि एक नया लक्ष्य वह नहीं है जो मैं चाहता हूं)। आदर्श रूप से एक्सकोड यह जान लेगा कि अभी मैं अपने ऐप के विकास संस्करण का परीक्षण कर रहा हूं, इसलिए मैं चाहता हूं कि सभी यूआरएल विकास सर्वर को इंगित करें। और मैं एक्सकोड को बताना चाहता हूं कि अब मैं उत्पादन को इंगित करने के लिए अपने ऐप का परीक्षण करने के लिए तैयार हूं, इसलिए उत्पादन सर्वर से संबंधित यूआरएल का उपयोग करें।

  2. यदि मैं प्रीप्रोसेसर मैक्रो को परिभाषित करता हूं, तो मैं ऐसा कहां करूं? मेरे पास एक APP_CONSTANTS.h फ़ाइल है जो एकमात्र जगह है जहां मेरे सभी सेवा यूआरएल संग्रहीत हैं। क्या मैं अपनी APP_CONSTANTS.h फ़ाइल में या Prefix.pch फ़ाइल में प्रीप्रोसेसर मैक्रो परिभाषित करता हूं?

  3. क्या कोई मेरे लिए विस्तृत उदाहरण लिखने की देखभाल करेगा?

मैं stackoverflow चारों ओर देखा है, लेकिन मैं किसी को स्पष्ट रूप से मेरे लिए, एक साथ सभी टुकड़ों को डाल, कि बहुत ज्यादा पहले से जानकारी नहीं रखता है की सराहना करेंगे। मैंने एक्सकोड बिल्ड गाइड (इसमें से अधिकांश) को परिचित किया लेकिन मैंने पेड़ों को केवल जंगल नहीं देखा।

धन्यवाद!

+0

आपको "विकास पर्यावरण" और दूसरों को स्पष्ट रूप से परिभाषित करना होगा। इसका क्या मतलब है? – borrrden

+0

प्रश्न स्पष्ट किया गया। – user798719

उत्तर

7

एक्सकोड (लगभग) इसके साथ कुछ करने के लिए कुछ नहीं है, अगर आप कंपाइलर जानना चाहते हैं तो आपको यह बताना होगा। कंपाइलर केवल जानता है कि आप इसे क्या कहते हैं। मेरे पास यह सेटअप भी है। मैं उनके बीच स्विच करने के लिए प्रीप्रोसेसर मैक्रोज़ का उपयोग करता हूं। डिफ़ॉल्ट रूप से एक्सकोड, DEBUG प्रीप्रोसेसर ध्वज को परिभाषित करता है जो आपके ऐप का विकास निर्माण करते समय सेट होता है। इसे रिलीज योजना में परिभाषित नहीं किया गया है।

ज फ़ाइल

extern NSString *const MYServerURL; 

मीटर फ़ाइल

#ifdef DEBUG 
NSString *const MYServerURL = @"http://www.dev.camerakingphotos/getAllPhotos"; 
#else 
NSString *const MYServerURL = @"http://www.camerakingphotos/getAllPhotos"; 
#endif 

ध्यान दें कि मैं नहीं #define इन किया: यह दो सर्वर के बीच स्विच करने का सबसे आसान तरीका है। इसमें बोनस है कि जब आप .m फ़ाइल को बदलते हैं, तो केवल इसे पुन: संकलित करने की आवश्यकता होती है (जैसा कि पूर्व के विपरीत होता है जिसके लिए प्रत्येक फ़ाइल की आवश्यकता होती है जिसमें हेडर को पुनः संयोजित किया जाता है)। ये चर वैश्विक स्तर पर किसी भी फ़ाइल में उपलब्ध होंगे जिसमें हेडर शामिल है जहां चर परिभाषित किया गया है। यदि आपको अधिक सुदृढ़ नियंत्रण की आवश्यकता है, तो आप अपनी .pch फ़ाइल में अपने स्वयं के प्रीप्रोसेसर आइटम को परिभाषित कर सकते हैं और आवश्यकतानुसार उन्हें चालू और बंद कर सकते हैं (टिप्पणी के माध्यम से)। फिर बस उपर्युक्त पैटर्न का उपयोग करें और DEBUG के बजाय अपने आइटम का उपयोग करें (हालांकि, रिलीज करने से पहले उन्हें उपयुक्त मान पर स्विच करना न भूलें)।

+0

धन्यवाद! यह काम किया! बहुत सराहना करते हैं। – user798719

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