मुझे iOS विकास में वेब सेवा से डेटा प्राप्त करने के लिए एक Http अनुरोध करने वाली विधियाँ कहाँ से आनी चाहिए?


9

मेरे पास अपने iOS एप्लिकेशन में एक मॉडल कार है जहां यह नाम, वर्ष, मान आदि जैसे पैरामीटर हैं जो कारों के डेटा के साथ एक सूची को भरने के लिए एक वेब सेवा से प्राप्त किए जाते हैं।

मुझे वह विधि कहां से डालनी चाहिए जो अतुल्यकालिक रूप से सर्वर पर जाती है और कारों की एक सरणी लौटाती है (यह विधि पहले से ही JSON को कार सरणी में बदल देती है)?

मेरा वर्तमान दृष्टिकोण मेरी कार कक्षा में एक स्थिर विधि है जो एक HttpClient प्राप्त करता है (इसलिए मैं ग्राहक का मजाक उड़ाते हुए इकाई परीक्षण कर सकता हूं) और कारों का एक एनएसएआर वापस करता है, क्या यह अच्छा है?

आप लोगों ने इस स्थिति में क्या किया है?

मैं चिंतित हूं क्योंकि मैंने हाल ही में स्वच्छ कोड पढ़ना शुरू किया है जो कहता है कि एक वर्ग को केवल एक ही काम करना चाहिए, और जिस तरह से मेरे पास अब 2 चीजें करने के लिए प्रतीत होता है (एक कार के बारे में जानकारी पकड़ो और कारों की एक सूची प्राप्त करें)।

जवाबों:


4

मैं एक CarBroker ऑब्जेक्ट की सिफारिश करूंगा जो कारों के लिए अनुरोधों को संभालती है और जैसे तरीकों को उजागर करती है:

  1. getCars - सभी कारों की सूची प्राप्त करने के लिए।
  2. getCarByID - एक विशिष्ट कार के लिए।

आगे इस तरह की वस्तु अन्य कार ब्रोकरों के अनुरोध को संभाल सकती है (इसे इसकी आवश्यकता होनी चाहिए)। किसी भी तरह से यह जिम्मेदारी का एक वास्तविक क्षेत्र है - ब्रोकरिंग कारें - जैसा कि कार ऑब्जेक्ट और ऑब्जेक्ट ब्रोकर की जिम्मेदारियों के साथ कार ऑब्जेक्ट होने के विपरीत है।


यह अच्छा लगता है क्योंकि अब आपके पास एक साफ कार ऑब्जेक्ट है जिसे पुन: उपयोग किया जा सकता है। यदि आप डेटा प्राप्त करने के लिए किसी अन्य एक्सेस प्रोटोकॉल का उपयोग करना शुरू करते हैं तो क्या होगा? इस परिदृश्य में, आपको शुरू करने के लिए कहीं है, आप जानते हैं कि आप एक तरफ प्रसंस्करण के सभी नियम \ तर्क कोड कार ऑब्जेक्ट स्वीकार करते हैं। तब आप REST या जो भी हो, का उपयोग कर CarBroker को फिर से लागू करना शुरू कर सकते हैं, लेकिन आप पहले से ही आधे रास्ते में हैं और आपको रीट्रोग्राम और रीटेस्ट तर्क नहीं करना है, जो आंतरिक रूप से केवल कार एब्सट्रैक्शन से संबंधित है ।
एंडिज स्मिथ

1

यहां एक अन्य वस्तु को रखने की आवश्यकता है, जिसे कहीं नहीं रखा जा सकता है, इस बात की गारंटी नहीं दी जा सकती है कि प्रतिक्रिया देने के लिए माता-पिता हमेशा जीवित रहेंगे।

मैं एक एकल वर्ग में इन कार्यान्वयन को रखने का सुझाव देता हूं। इस वर्ग को रखना कुछ सामान्य विधि कार्यान्वयन के लिए भी उपयोगी होगा जिसे बहुत बार कहा जा सकता है।


-1

जब आप वेब से सरणी लौटाते हैं, तो ViewDidLoad पद्धति के अंदर आप अतुल्यकालिक विधि को कॉल कर सकते हैं, दृश्य को ताज़ा कर सकते हैं। आप डेटाबेस में सरणी को बचा सकते हैं, इसलिए आपको व्यूकंट्रोलर लोड हर बार वेब से डेटा लोड करने की आवश्यकता नहीं होगी।


3
यह पूछे गए प्रश्न का उत्तर कैसे देता है?
gnat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.