Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. CloudKit
Code

क्लाउडकीट के साथ शॉपिंग लिस्ट एप्लिकेशन का निर्माण: रिलेशनशिप्स जोड़ना

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building a Shopping List Application With CloudKit.
Building a Shopping List Application With CloudKit: Adding Records
Building a Shopping List Application With CloudKit: Sharing Shopping Items

Hindi (हिंदी) translation by Taruni Rampal (you can also view the original English article)

इस सीरीज के पिछले ट्यूटोरियल में, हमने शॉपिंग लिस्ट्स को जोड़ने, अपडेट करने और रिमूव करने की क्षमता को जोड़ा। हालांकि इसमें किसी भी आइटम के बिना शॉपिंग लिस्ट बहुत उपयोगी नहीं है। इस ट्यूटोरियल में, हम शॉपिंग लिस्ट से आइटम जोड़ने, अपडेट करने और रिमूव करने की क्षमता बढ़ाएंगे। इसका मतलब है कि हम रेफरेन्सेस और CKReference क्लास के साथ काम करेंगे।

हम शॉपिंग लिस्ट एप्लिकेशन के डेटा मॉडल पर भी बारीकी से विचार करेंगे। डेटा मॉडल में परिवर्तन करना कितना आसान है और क्लाउडकिट डैशबोर्ड में किए गए परिवर्तनों के लिए एप्लिकेशन कैसे रेस्पोन्ड देता है?

आवश्यक शर्तें

याद रखें कि मैं Xcode 7 और Swift 2 का उपयोग करूंगा। यदि आप Xcode के पुराने वर्जन का उपयोग कर रहे हैं, तो ध्यान रखें कि आप स्विफ्ट प्रोग्रामिंग लैंग्वेज के किसी भिन्न वर्जन का उपयोग कर रहे हैं।

इस ट्यूटोरियल में, हम जारी रखेंगे जहाँ हमने इस सीरीज के दूसरे ट्यूटोरियल में छोड़ा था। आप GitHub से प्रोजेक्ट को डाउनलोड या क्लोन कर सकते हैं।

1. शॉपिंग लिस्ट डिटेल्स

वर्तमान में, यूजर डिटेल डिस्क्लोज़र इंडिकेटर को टैप करके शॉपिंग लिस्ट के नाम को मॉडिफाई कर सकता है, लेकिन यूजर को लिस्ट व्यू कंट्रोलर में एक टैप करके शॉपिंग लिस्ट की कंटेंट्स को देखने में एब्ल होना चाहिए। इस काम को करने के लिए, हमें सबसे पहले एक नए UIViewController सबक्लास की आवश्यकता है।

Step 1: ListViewController क्रिएटिंग

ListViewController क्लास लिस्ट व्यू में शॉपिंग लिस्ट की कंटेंट्स प्रदर्शित करेगा। ListViewController क्लास का इंटरफ़ेस ListsViewController क्लास के समान दिखता है। हम क्लाउडकीट और SVProgressHUD फ्रेमवर्क इम्पोर्ट करते हैं और UITableViewDataSource और UITableViewDelegate प्रोटोकॉल के क्लास के अनुरूप होते हैं। क्योंकि हम एक टेबल व्यू का उपयोग कर रहे हैं, हम एक निरंतर, ItemCell घोषित करते हैं, जो सेल पुनः उपयोग आइडेंटिफायर के रूप में काम करेगा।

हम तीन आउटलेट्स की घोषणा करते हैं, टाइप UILabel के messageLabel!, टाइप UITableView का tableView!, और UIActivityIndicatorView टाइप का activityIndicicatorView !. लिस्ट व्यू कंट्रोलर उस शॉपिंग की लिस्ट का रिफरेन्स रखता है जिसे वह लिस्ट प्रॉपर्टी में प्रदर्शित कर रहा है, जो CKRecord का टाइप है। शॉपिंग की लिस्ट में आइटम प्रॉपर्टी में स्टोर्ड किए जाते हैं, जो कि टाइप [CKRecord] का है। अंत में, हम यूजर द्वारा चुने गए शॉपिंग लिस्ट में किस आइटम का ट्रैक रखने के लिए एक सहायक वेरिएबल, selection का उपयोग करते हैं। यह इस ट्यूटोरियल में बाद में स्पष्ट हो जाएगा।

Step 2: यूजर इंटरफ़ेस बनाना

Main.storyboard खोलें, एक व्यू कंट्रोलर जोड़ें और अपनी क्लास को Identity Inspector में ListViewController पर सेट करें। लिस्ट व्यू कंट्रोलर के प्रोटोटाइप सेल को सेलेक्ट करें, कण्ट्रोल कीय दबाएं, और प्रोटोटाइप सेल से लिस्ट व्यू कंट्रोलर पर खींचें। उस मेनू से दिखाएँ, जो पॉप अप करता है और आइडेंटिफायर को Attributes Inspector लिस्ट में सेट करता है।

एक लिस्ट व्यू, एक लेबल और एक एक्टिविटी इंडिकेटर व्यू कंट्रोलर के व्यू में जोड़ें। व्यू कंट्रोलर के आउटलेट के साथ-साथ टेबल व्यू को भी वायर करना न भूलें।

लिस्ट व्यू का सेलेक्ट करें और Attributes Inspector में Prototype Cell को 1 पर सेट करें। प्रोटोटाइप सेल को सेलेक्ट करें, स्टाइल टू राइट डिटेल, आईडेंटिफायर टू आईटसेल, और एक्सेसरी टू डिस्क्लोजर इंडिकेटर। यह तब होता है जब आपका काम समाप्त होने पर व्यू कंट्रोलर दिखना चाहिए।

List View Controller

Step 3: कंट्रोलर को कॉन्फ़िगर करना

इससे पहले कि हम क्लाउडकीट फ्रेमवर्क को फिर से देखें, हमें प्राप्त होने वाले डेटा के लिए व्यू कंट्रोलर तैयार करना होगा। viewDidLoad के इम्प्लीमेंटेशन को अपडेट करके प्रारंभ करें। हम शॉपिंग की लिस्ट के नाम पर व्यू कंट्रोलर का टॉपक सेट करते हैं और दो सहायक मेथड, setupView और fetchItems का विनती(इन्वोके) करते हैं।

setupView मेथड उस लिस्ट के समान है जिसे हमने ListsViewController क्लास में लागू किया था।

जब हम इस पर होते हैं, तो आइए एक और परिचित सहायक मेथड को भी updateView करें। updateView में, हम items प्रॉपर्टी में स्टोर्ड आइटम के आधार पर व्यू कंट्रोलर के यूजर इंटरफ़ेस को अपडेट करते हैं।

अब मैं fetchItems खाली छोड़ने जा रहा हूँ। लिस्ट व्यू कंट्रोलर सेट करने के बाद हम इस मेथड को फिर से जारी करेंगे।

Step 4: लिस्ट डेटा सोर्स के तरीके देखें

हम दूसरे टेस्ट रन आवेदन लेने के लिए लगभग तैयार हैं। ऐसा करने से पहले, हमें UITableViewDataSource प्रोटोकॉल लागू करना होगा। यदि आपने इस सीरीज की पिछली किश्तें पढ़ ली हैं, तो इम्प्लीमेंटेशन करना जाना पहचाना लगेगा।

Step 5: हैंडलिंग सिलेक्शन

सब कुछ एक साथ टाई करने के लिए, हमें ListsViewController क्लास को फिर से देखना होगा। tableView(_: didSelectRowAtIndexPath:) UITableViewDelegate प्रोटोकॉल का मेथड लागू करके प्रारंभ करें।

हमें कुछ समय पहले तैयार की गई prepareForSegue(segue:sender:) सेगमेंट को संभालने के लिए भी तैयार होना चाहिए। इसका मतलब है कि हमें switch स्टेटमेंट में एक नया case जोड़ना होगा।

कंपाइलर को संतुष्ट(सटिफाइ) करने के लिए, हमें ListsViewController.swift के टॉप पर SegueList कांस्टेंट को भी डिक्लेअर करने की आवश्यकता है।

एप्लिकेशन बनाएं और देखें कि क्या सब कुछ सही तरीके से वायर्ड है। क्योंकि हमने अभी तक fetchItems मेथड को लागू नहीं किया है, इसलिए कोई आइटम प्रदर्शित नहीं किया जाएगा। हमें कुछ ठीक करना है।

2. आइटम लाना

Step 1: रिकॉर्ड टाइप बनाएँ

क्लाउडकीट बैकएंड से आइटम लाने से पहले, हमें क्लाउडकीट डैशबोर्ड में एक नया रिकॉर्ड टाइप बनाने की आवश्यकता है। क्लाउडकीट डैशबोर्ड पर नेविगेट करें, एक नया रिकॉर्ड टाइप बनाएं, और इसे Items नाम दें। प्रत्येक आइटम में एक नाम होना चाहिए ताकि एक नई फ़ील्ड बनाएं, फ़ील्ड नाम को name पर सेट करें और फ़ील्ड टाइप को String पर सेट करें।

प्रत्येक आइटम को यह भी पता होना चाहिए कि वह किस शॉपिंग लिस्ट से संबंधित है। इसका मतलब है कि प्रत्येक आइटम को अपनी शॉपिंग लिस्ट का रिफरेन्स चाहिए। एक नया फ़ील्ड बनाएँ, फ़ील्ड नाम को list पर सेट करें और फ़ील्ड टाइप को Reference पर सेट करें। संबंधों को प्रबंधित करने के लिए Reference फ़ील्ड टाइप को इस सटीक उद्देश्य के लिए डिज़ाइन किया गया था।

Item Record Type

Xcode पर वापस जाएं, ListsViewController.swift खोलें, और Items रिकॉर्ड टाइप के लिए टॉप पर एक नया कांस्टेंट घोषित करें।

Step 2: आइटम ला रहा है

ListViewController.swift खोलें और fetchItems मेथड पर नेविगेट करें। इम्प्लीमेंटेशन ListsViewController क्लास के fetchLists मेथड के समान है। हालांकि एक महत्वपूर्ण अंतर है।

fetchItems और fetchLists के बीच का अंतर यह है कि हम CKQuery इनिशियलाइज़र को पास करते हैं। हमें यूजर के प्राइवेट डेटाबेस में प्रत्येक आइटम में कोई दिलचस्पी नहीं है। हम केवल उन वस्तुओं में रुचि रखते हैं जो किसी विशेष शॉपिंग लिस्ट से जुड़ी हैं। यह CKQuery उदाहरण के विधेय में परिलक्षित होता है।

हम एक CKReference उदाहरण में पास करके प्रेडीकेट का निर्माण करते हैं, जिसे हम init(recordID:action:) के जरिए बनाते हैं। यह मेथड दो तर्कों को स्वीकार करती है, एक CKRecordID उदाहरण जो शॉपिंग लिस्ट रिकॉर्ड और CKReferenceAction उदाहरण को संदर्भित करता है जो यह निर्धारित करता है कि शॉपिंग लिस्ट हटाए जाने पर क्या होता है।

कोर डेटा में नियमों को हटाने के लिए रिफरेन्स क्रियाएं बहुत समान हैं। यदि संदर्भित ऑब्जेक्ट, इस उदाहरण में शॉपिंग की लिस्ट को हटा दिया जाता है, तो क्लाउडकिट रूपरेखा रिफरेन्स कार्रवाई का निरीक्षण करती है यह निर्धारित करने के लिए कि रिकॉर्ड किए गए रिकॉर्ड के रिफरेन्स में क्या होना चाहिए। CKReferenceAction enum में दो सदस्य मान हैं:

  • None: यदि रिफरेन्स हटा दिया जाता है, तो हटाए गए रिकॉर्ड को रेफरेन्सिंग करने वाले रिकॉर्ड के लिए कुछ भी नहीं होता है।
  • DeleteSelf: यदि रिफरेन्स हटा दिया जाता है, तो हटाए गए रिकॉर्ड को रेफरेन्सिंग करने वाला प्रत्येक रिकॉर्ड भी हटा दिया जाता है।

क्योंकि शॉपिंग लिस्ट के बिना कोई भी आइटम मौजूद नहीं होना चाहिए, हम DeleteSelf पर रिफरेन्स एक्शन सेट करते हैं।

processResponseForQuery(records:error:) मेथड में कुछ भी नया नहीं है। हम क्वेरी की रिस्पांस को प्रोसेस करते हैं और अकोर्डिंगली यूजर इंटरफ़ेस को अपडेट करते हैं।

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

3. आइटम जोड़ना

Step 1: AddItemViewControler बनाना

यह शॉपिंग की लिस्ट में आइटम जोड़ने की एबिलिटी को इम्प्लीमेंट करने का समय है। एक नया UIViewController सबक्लास, AddItemViewController बनाकर शुरू करें। व्यू कंट्रोलर का इंटरफ़ेस AddListViewController क्लास जैसा है।

टॉप पर, हम क्लाउडकीट और SVProgressHUD फ्रेमवर्क इम्पोर्ट करते हैं। हम AddItemViewControllerDelegate प्रोटोकॉल की घोषणा करते हैं, जो AddListViewControllerDelegate प्रोटोकॉल के समान उद्देश्य पर काम करेगा। प्रोटोकॉल दो तरीकों को परिभाषित करता है, एक आइटम जोड़ने के लिए और एक अपडेटिंग आइटम के लिए।

हम दो आउटलेट, एक टेक्स्ट फ़ील्ड और एक बार बटन आइटम घोषित करते हैं। हम डेलिगेट और एक हेल्पर वेरिएबल, newItem के लिए एक प्रॉपर्टी की घोषणा करते हैं, जो हमें यह निर्धारित करने में मदद करता है कि हम एक नया आइटम बना रहे हैं या किसी मौजूदा आइटम को अपडेट कर रहे हैं। अंत में, हम शॉपिंग की लिस्ट को रेफेरेंसेड करने के लिए एक प्रॉपर्टी लिस्ट की घोषणा करते हैं जिसमें आइटम को जोड़ा जाएगा और उस आइटम के लिए एक प्रॉपर्टी item जिसे हम बना रहे हैं या अपडेट कर रहे हैं।

यूजर इंटरफ़ेस बनाने से पहले, आइए हम उन दो एक्शन्स को इम्प्लीमेंट करें जिनकी हमें स्टोरीबोर्ड में आवश्यकता होगी, cancel(_ :) और save(_ :)। हम इस ट्यूटोरियल में बाद में save (_ :) एक्शन के इम्प्लीमेंटशन को अपडेट करेंगे।

Step 2: यूजर इंटरफ़ेस बनाना

Main.storyboard खोलें, लिस्ट व्यू कंट्रोलर के नेविगेशन बार में एक बार बटन आइटम जोड़ें, और Attributes Inspector में Add के लिए System Item सेट करें। Object Library से व्यू कंट्रोलर खींचें और AddItemViewController के लिए अपनी क्लास सेट करें। हमारे द्वारा बनाई गई बार बटन आइटम से एक सेगुए बनाएं जो आइटम व्यू कंट्रोलर को जोड़ते हैं। उस मेनू से Show चुनें जो पॉपअप करता है और आइटम के आइडेंटिफायर को ItemDetail पर सेट करता है।

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

Add Item View Controller

Step 3: कंट्रोलर को कॉन्फ़िगर करना

आइटम को देखने वाले कंट्रोलर के इम्प्लीमेंटेशन में ऐसा कुछ भी नहीं है जिसे हमने अभी तक कवर नहीं किया है। हालांकि, एक एक्सेप्शन है, जिसे हम एक क्षण में चर्चा करेंगे। आइए viewDidLoad में व्यू कंट्रोलर को कॉन्फ़िगर करके शुरू करें।

हम setupView, एक हेल्पर मेथड, और newItem के मान को अद्यतन करते हैं। यदि item प्रॉपर्टी nil के बराबर है, तो newItem true के बराबर है। यह निर्धारित करने में हमारी सहायता करता है कि हम शॉपिंग लिस्ट आइटम बना रहे हैं या अपडेट कर रहे हैं।

हम UITextFieldTextDidCidChangeNotification टाइप की सूचनाओं के आब्जर्वर के रूप में व्यू कंट्रोलर भी जोड़ते हैं। इसका मतलब है कि nameTextField की कंटेंट्स में चेंज होने पर व्यू कंट्रोलर को सूचित किया जाता है।

ViewDidAppear(animated:) में, हम कीबोर्ड को nameTextField पर FirstResponder कहकर दिखाते हैं।

setupView मेथड दो सहायक मेथड्स, updateNameTextField और updateSaveButton को आमंत्रित(इन्वोकेस) करती है। इन हेल्पर मेथड्स का इम्प्लीमेंटेशन सीधा है। updateNameTextField में, हम टेक्स्ट फ़ील्ड को पॉप्युलेट करते हैं। updateNameTextField में, हम टेक्स्ट फ़ील्ड की कंटेंट्स के आधार पर सेव बटन को एब्ल या डिसएबल करते हैं।

इससे पहले कि हम save(_:) मेथड के अपडेटेड इम्प्लीमेंटशन पर एक नज़र डालें, हमें textFieldDidChange(_ :) मेथड को लागू करने की आवश्यकता है। हम सब करते हैं इन्वोके updateSaveButton बटन को एब्ल या डिसएबल करने के लिए है।

Step 4: आइटम सेव करना

save(_ :) मेथड AddItemViewController क्लास की सबसे दिलचस्प मेथड है, क्योंकि यह हमें दिखाता है कि क्लाउडकीट रेफरेन्सेस के साथ कैसे काम किया जाए। नीचे दिए गए save(_ :) मेथड के इम्प्लीमेंटेशन पर एक नज़र डालें।

जब से हम AddListViewController क्लास में सेविंग रिकॉर्ड को कवर करते हैं, तो इसके ज्यादातर इम्प्लीमेंटेशन फेमिलिअर होने चाहिए। हमें सबसे अधिक रुचि किस टाइप कि आइटम शॉपिंग लिस्ट का रिफरेन्स कैसे रखता है। हम पहले इंस्टैंस प्रारंभ करनेवाला, init (recordid:action:) इंस्टैंस करके एक CKReference उदाहरण बनाते हैं। जब हमने शॉपिंग लिस्ट आइटम लाने के लिए क्वेरी बनाई, तो हमने कुछ मिनट पहले CKReference उदाहरण बनाने का डिटेल्स कवर किया।

इस रिफरेन्स में आइटम के बारे में बताना आसान है। हम setObjec (_: forKey :) को item प्रॉपर्टी पर इनवॉइस करते हैं, CKReference उदाहरण में value के रूप में और "List" key के रूप में पास करते हैं। key उस क्षेत्र के नाम से मेल खाती है जिसे हमने क्लाउडकीट डैशबोर्ड में असाइन है। आइटम को iCloud में सेव करना उसी तरह है जो हमने पहले कवर किया था। क्लाउडकिट रेफरेन्सेस के साथ काम करना कितना आसान है।

कंटैन्स का इम्प्लीमेंटेशन processResponse(record:error :) में कुछ भी नया नहीं है। हम यह देखने के लिए जाँच करते हैं कि क्या कोई एर्रोर्स है और यदि कोई एर्रोर्स नहीं है, तो हम डेलिगेट को सूचित करेंगे।

Step 5: उपडटींग लिस्टव्यू कंट्रोलरListViewController

अभी भी हमे ListViewController क्लास में कुछ काम करना है। AddItemViewControllerDelegate प्रोटोकॉल के लिए ListViewController क्लास के अनुरूप शुरू करें। आइडेंटिफायर ItemDetail के साथ सेगुए करने वाले के लिए एक निरंतर डिक्लेअर करने के लिए भी यह एक अच्छे मोमेंट है।

AddItemViewControllerDelegate प्रोटोकॉल को लागू करना तुच्छ(ट्रिविअल) है। controller(_:didAddItem:) में, हम आइटम में नए items जोड़ते हैं, items सॉर्ट करते हैं, टेबल व्यू को फिर से लोड करते हैं, और updateView इन्वोके करते हैं।

इम्प्लीमेंटेशन का controller(_:didUpdateItem:) और भी आसान है। हम items सॉर्ट करते हैं और टेबल व्यू को फिर से लोड करते हैं।

sortItems में, हम sortInPlace फ़ंक्शन, MutableCollectionType प्रोटोकॉल की एक मेथड का उपयोग करके नाम से CKRecord उदाहरणों की ऐरे को सॉर्ट करते हैं।

शॉपिंग लिस्ट आइटम को लागू करने, अपडेट करने और डिलीट के लिए दो और विशेषताएं हैं।

Step 6: आइटम डिलीट करना

आइटम डिलीट करना के लिए, हमें UITableViewDataSource प्रोटोकॉल के tableView(_: commitEditingStyle: forRowAtIndexPath :) को लागू करने की आवश्यकता है। हम उस शॉपिंग लिस्ट आइटम को लाते हैं, जिसे डिलीट करने की आवश्यकता होती है और उसे डिलीट करने के लिए deleteRecord(_:) मेथड।

deleteRecord(_ :) के इम्प्लीमेंटेशन में कुछ भी नया नहीं है। हम प्राइवेट डेटाबेस पर deleteRecordWithID (_:completionHandler :) हटाते हैं और कम्पलीशन हैंडलर में रिस्पांस का प्रोसेस करते हैं।

processResponseForDeleteRequest (record: recordID:error:) में, हम आइटम प्रॉपर्टी और यूजर इंटरफ़ेस अपडेट करते हैं। यदि कुछ गलत हुआ है, तो हम एक अलर्ट दिखाकर यूजर को सूचित करते हैं।

Step 7: उपडटींग आइटम

यूजर डिटेल डिस्क्लोज़र इंडिकेटर को टैप करके एक आइटम को अपडेट कर सकता है। इसका मतलब है कि हमें tableView(_: accessoryButtonTappedForRowWithIndexPath:) डेलिगेट मेथड को लागू करने की आवश्यकता है। इस मेथड में, हम यूजर के सिलेक्शन को स्टोर्ड करते हैं और मैन्युअल रूप से ListDetail सेगुए करते हैं। ध्यान दें कि लिस्ट में कुछ भी नहीं होता है tableView(_: didSelectRowAtIndexPath :) मेथड। हम सभी यूजर द्वारा टैप की गई रौ को डेसेलेक्ट करते हैं।

prepareForSegue (_:sender:) में, हम selection प्रॉपर्टी के value का उपयोग करके शॉपिंग लिस्ट आइटम प्राप्त करते हैं और डेस्टिनेशन व्यू कंट्रोलर, AddItemViewController क्लास का एक उदाहरण कॉन्फ़िगर करते हैं।

शॉपिंग लिस्ट आइटम्स को डिलीट और अपडेट करने के लिए हमें बस इतना ही करना है। अगले भाग में, हम यह पता लगाते हैं कि क्लाउडकिट डैशबोर्ड में डेटा मॉडल को अपडेट करना कितना आसान है।

4. डेटा मॉडल को अपडेट करना

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

Items रिकॉर्ड टाइप में कर्रेंटली में दो फ़ील्ड हैं, name और list। मैं आपको दिखाना चाहता हूं कि नई फील्ड को जोड़कर डेटा मॉडल को अपडेट करना क्या है। क्लाउडकीट डैशबोर्ड खोलें और आइटम रिकॉर्ड में एक नई फ़ील्ड जोड़ें। फ़ील्ड नाम को number पर सेट करें और फ़ील्ड टाइप को Int(64) पर सेट करें। अपने चैंजेस को सेव करना न भूलें।

Update Item Record Type

आइए अब किसी आइटम की संख्या को मॉडिफाई करने की एबिलिटी जोड़ें। AddItemViewController.swift खोलें और दो आउटलेट, एक लेबल और एक स्टेपर घोषित करें।

हमें एक एक्शन जोड़ने की भी ज़रूरत है जो स्टीपर के वैल्यू में चेंज होने पर शुरू हो जाता है। numberDidChange(_ :) में, हम numberLabel की कंटेंट्स को अपडेट करते हैं।

Main.storyboard खोलें और आइटम व्यू कंट्रोलर में एक लेबल और एक स्टेपर जोड़ें। करेस्पोंडिंग यूजर इंटरफ़ेस एलिमेंट्स के लिए व्यू कंट्रोलर के आउटलेट कनेक्ट करें और Value Changed इवेंट के लिए स्टेपर में numberDidChange(_ :) एक्शन कनेक्ट करें।

Update Add Item View Controller

AddItemViewController क्लास का save(_:) एक्शन भी थोड़ा बदलता है। आइए देखें कि यह कैसा दिखता है।

हमें केवल कोड की दो लाइन्स को जोड़ना होगा। एक टॉप, हम एक स्थिर, number में स्टेपर के वैल्यू को स्टोर्ड करते हैं। जब हम item को कॉन्फ़िगर करते हैं, तो हम "number" key के वैल्यू के रूप में number सेट करते हैं और यही सब कुछ है।

हमें ऐड आइटम व्यू कंट्रोलर के यूजर इंटरफेस को अपडेट करने के लिए एक हेल्पर मेथड को इम्प्लीमेंट करने की भी आवश्यकता है। यह update NumberStepper मेथड जांचती है कि रिकॉर्ड में number नाम का कोई फ़ील्ड है या नहीं तो स्टेपपर अपडेट करता है या नहीं।

हम AddItemViewController क्लास के setupView मेथड में updateNumberStepper को इन्वोके करते हैं।

प्रत्येक आइटम की संख्या की कल्पना करने के लिए, हमें ListViewController में एक बदलाव करने की आवश्यकता है। tableView(_: cellForRowAtIndexPath :) में, हम आइटम के नंबर फ़ील्ड के वैल्यू पर सेल के सही लेबल की कंटेंट्स सेट करते हैं।

डेटा मॉडल में किए गए बदलावों को लागू करने के लिए हमें बस इतना करना चाहिए। कोई माइग्रेशन या ऐसा कुछ भी करने की आवश्यकता नहीं है। क्लाउडकीट निट्टी ग्रिटि डिटेल्स का ध्यान रखता है।

निष्कर्ष

अब आपके पास क्लाउडकीट फ्रेमवर्क की उचित नींव होनी चाहिए। मुझे आशा है कि आप सहमत होंगे कि Apple ने फ्रेमवर्क और क्लाउडकिट डैशबोर्ड के साथ एक अच्छा काम किया है। बहुत कुछ ऐसा है जिसे हमने इस सीरीज में शामिल नहीं किया है, लेकिन इससे आपको अपने स्वयं के प्रोजेक्ट्स में क्लाउडकीट के साथ आरंभ करने के लिए पर्याप्त लाभ मिलेगा।

यदि आपके कोई प्रश्न या टिप्पणी हैं, तो बेझिझक उन्हें नीचे टिप्पणी में छोड़ दें या Twitter पर मेरे पास पहुंचें।

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.