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

आईओएस स्विफ्ट के साथ खरोंच से: नींव ढांचे की खोज

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called iOS From Scratch With Swift.
iOS From Scratch With Swift: Exploring the iOS SDK
iOS From Scratch With Swift: First Steps With UIKit

Hindi (हिंदी) translation by Ade Khairul Umam (you can also view the original English article)

फाउंडेशन फ्रेमवर्क एक iOS डेवलपर के उपकरण बॉक्स में रोटी और मक्खन है । यह NSObject रूट वर्ग और iOS विकास के लिए बुनियादी इमारत ब्लॉकों की एक बड़ी संख्या, संख्याओं और स्ट्रिंग्स के लिए कक्षाओं से, arrays और शब्दकोशों के लिए प्रदान करता है । नींव ढांचे के पहले थोड़ा सुस्त लग सकता है, लेकिन यह शक्ति का एक बहुत दोहन और iOS अनुप्रयोगों के विकास के लिए अपरिहार्य है ।

कोर फाउंडेशन के बारे में एक शब्द

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

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

दोनों चौखटे के प्राथमिक लक्ष्य समान है, विभिंन पुस्तकालयों और चौखटे के बीच डेटा और कोड के बंटवारे को सक्षम करने से । कोर फाउंडेशन भी अंतर्राष्ट्रीयकरण के लिए समर्थन शामिल है । इस समर्थन का एक मुख्य घटक CFString अपारदर्शी प्रकार के माध्यम से प्रदान किया गया है, जो यूनिकोड वर्णों की एक सरणी को कुशलतापूर्वक प्रबंधित करता है ।

जैसा कि मैंने पहले उल्लेख किया है, टोल मुक्त सचमुच पुल मापदंडों में कोर नींव वस्तुओं और इसके विपरीत के लिए कोको वस्तुओं के प्रतिस्थापन को सक्षम करने के द्वारा दोनों चौखटे के बीच खाई पाटने ।

यह ध्यान रखें कि स्वचालित संदर्भ गिनती (चाप) कोर नींव "ऑब्जेक्ट्स" का प्रबंधन नहीं करता है महत्वपूर्ण है । इसका मतलब यह है कि आप कोर नींव के साथ काम करते समय स्मृति प्रबंधन के लिए जिंमेदार हैं । माइक ऐश स्वत: संदर्भ गिनती और कैसे कोर फाउंडेशन और टोल मुक्त पाटने के साथ चाप का उपयोग करने के बारे में एक महान लेख लिखा था ।

यात्रा है एप्पल कोर फाउंडेशन फ्रेमवर्क संदर्भ यदि आप ढांचे के बारे में अधिक जानने के लिए और ढांचे के अपारदर्शी प्रकार की एक पूरी सूची के लिए चाहते हैं ।

अभ्यास, अभ्यास, अभ्यास

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

Creating a New Playground

यह वही है जो खेल के मैदान की सामग्री की तरह दिखना चाहिए ।

खेल का मैदान शीर्ष पर एक टिप्पणी, UIKit ढांचे के लिए एक आयात बयान, और एक चर घोषणा शामिल है । सही पर, आप खेल के मैदान के उत्पादन देख सकते हैं ।

जब से हम नींव ढांचे के साथ काम करेंगे, हम UIKit के लिए आयात बयान फाउंडेशन के लिए एक आयात बयान के साथ बदलने की जरूरत है । शीर्ष पर टिप्पणी निकालें, आयात कथन का अद्यतन करें, और चर घोषणा को निकालें ।

फाउंडेशन

नींव ढांचे की संख्या, तार, और संग्रह (arrays, शब्दकोशों, और सेट) के साथ काम करने के लिए कक्षाओं का एक संग्रह से ज्यादा है । यह भी दर्जनों प्रोटोकॉल, फ़ंक्शंस, डेटा प्रकार, और स्थिरांक को परिभाषित करता है ।

इस अनुच्छेद के बाकी हिस्सों में, मैं मुख्य रूप से वर्गों है कि आप सबसे अधिक बार उपयोग करेंगे जब iOS अनुप्रयोगों के विकास पर ध्यान दिया जाएगा । लेकिन, मैं भी संक्षेप में तीन प्रमुख नींव रूपरेखा, NSObject, NSCoding, और NSCopying द्वारा परिभाषित प्रोटोकॉल के बारे में बात करेंगे ।

प्रोटोकॉल

कई भाषाओं, जैसे Perl, अजगर, और C++, एकाधिक वंशानुक्रम के लिए समर्थन प्रदान करते हैं । इसका मतलब यह है कि एक वर्ग से उतर सकते है-एक उपवर्ग के एक वर्ग से अधिक हो सकता है ।

भले ही स्विफ्ट और उद्देश्य सी एकाधिक भाग के लिए समर्थन प्रदान नहीं करते हैं, वे प्रोटोकॉल के रूप में विनिर्देशन के माध्यम से एकाधिक भाग का समर्थन करते हैं । हम पहले से ही इस श्रृंखला में प्रोटोकॉल पहले से शामिल है, लेकिन वहां एक महत्वपूर्ण विस्तार से हम अभी तक चर्चा नहीं की है ।

वैकल्पिक और आवश्यक विधियाँ

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

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

लाभ

प्रोटोकॉल के लाभ कई गुना हैं । जब कोई वर्ग किसी प्रोटोकॉल को गोद ले या अनुरूप करता है, तो वर्ग को प्रोटोकॉल द्वारा घोषित विधियों को कार्यान्वित करने की अपेक्षा की जाती है. आप में से कुछ के लिए, प्रोटोकॉल जावा में इंटरफेस की याद ताजा हो सकता है । इसका अर्थ यह है कि किसी प्रोटोकॉल ऑब्जेक्ट के प्रकार का खुलासा किए बिना किसी ऑब्जेक्ट के लिए इंटरफ़ेस घोषित करने के लिए उपयोग किया जा सकता है ।

कई भाग अपने लाभ है, लेकिन यह सबसे निश्चित रूप से अपने नकारात्मक पक्ष है । प्रोटोकॉल का लाभ यह है कि असंबंधित प्रकार, इनम, वर्गों, और संरचनाओं, अभी भी प्रोटोकॉल के उपयोग के माध्यम से समान व्यवहार साझा कर सकते हैं ।

NSObject

NSObject रूट वर्ग के अलावा, फाउंडेशन फ्रेमवर्क भी NSObject प्रोटोकॉल को परिभाषित करता है । स्विफ्ट में, तथापि, वर्गों और प्रोटोकॉल एक ही नाम नहीं हो सकता । नतीजतन, NSObject प्रोटोकॉल स्विफ्ट में NSObjectProtocol के रूप में जाना जाता है ।

NSObjectProtocol प्रोटोकॉल के अनुरूप वस्तुओं उनके वर्ग और superclass के बारे में पूछा जा सकता है, अंय वस्तुओं के साथ तुलना में किया जा सकता है, और स्वयं का जवाब । यह केवल NSObjectProtocol प्रोटोकॉल के अनुरूप ऑब्जेक्ट्स के लिए जोड़े गए व्यवहार का एक छोटा सबसेट है ।

NSCoding

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

NSCopying

NSCopying प्रोटोकॉल केवल एक विधि की घोषणा करता है, copyWithZone (_:) । यदि कोई वर्ग प्रतिलिपि ऑब्जेक्ट्स का समर्थन करने के लिए है, इसे NSCopying प्रोटोकॉल के अनुरूप करने की आवश्यकता है । किसी ऑब्जेक्ट की प्रतिलिपि बनाकर उसे कॉपी () या copyWithZone (_:)) का संदेश भेजकर किया जाता है.

वर्गों

NSObject

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

NSObject रूट वर्ग से इनहेरिट करके, ऑब्जेक्ट उद्देश्य-c ऑब्जेक्ट के रूप में व्यवहार करने के लिए कैसे जानते हैं और कैसे उद्देश्य-c रनटाइम के साथ इंटरफ़ेस करने के लिए । यह एक आश्चर्य है कि NSObject NSObject/NSObjectProtocol प्रोटोकॉल है, जो हम कुछ क्षणों पहले चर्चा के अनुरूप नहीं होना चाहिए ।

चलो देखते है कि हम क्या मुफ्त में मिल अगर एक वर्ग NSObject वर्ग से विरासत । अपने खेल के मैदान में निंनलिखित कोड स्निपेट जोड़ें । यदि आप इस श्रृंखला के पिछले लेख पढ़ा है यह परिचित दिखना चाहिए । हम एक वर्ग, पुस्तक, कि NSObject से विरासत की घोषणा । पुस्तक वर्ग दो उदाहरण विधियों, अध्यायों () और पृष्ठों () को लागू करता है ।

क्योंकि पुस्तक NSObject और NSObject से वारिस NSObjectProtocol प्रोटोकॉल के अनुरूप है, हम अपने व्यवहार और विरासत पेड़ के बारे में किताब वर्ग पूछ सकते हैं । निंनलिखित उदाहरण पर एक नज़र रखना ।

Inspecting the Book Class

हम सबसे पहले बुक क्लास पर classForCoder () लागू करने के बारे में किताब वर्ग से पूछते हैं । classForCoder () विधि एक वर्ग विधि है, जिसका अर्थ है कि हम इस पद्धति को पुस्तक वर्ग पर ही लागू कर सकते हैं. अगले, हम अपने superclass या माता पिता के वर्ग के बारे में पुस्तक वर्ग पूछना, वर्ग यह सीधे से वारिस । यह एक वैकल्पिक के बाद से नहीं हर वर्ग के एक मूल वर्ग है देता है । आश्चर्य की बात है, पुस्तक के superclass NSObject है ।

अगली पंक्ति हमें बताता है कि पुस्तक NSObjectProtocol प्रोटोकॉल है, जो अप्रत्याशित नहीं है क्योंकि यह NSObject वर्ग से इस विशेषता को विरासत के अनुरूप है । हम यह भी सीखना है कि पुस्तक NSCoding प्रोटोकॉल के अनुरूप नहीं है ।

ऐसा लगता है कि पुस्तक वर्ग अध्याय () विधि का जवाब नहीं है । यह है कि अध्याय के बाद से अजीब नहीं है () एक उदाहरण विधि, नहीं एक वर्ग विधि है । यह हमारे उदाहरण है जिसमें हम एक किताब उदाहरण आरंभ और उदाहरण के एक ही सवाल पूछने के अंतिम दो पंक्तियों से साबित हो रहा है ।

उपरोक्त उदाहरण में हम respondsToSelector (_:) विधि का उपयोग करते हैं, लेकिन आप सोच रहे होंगे कि एक चयनकर्ता क्या है? क्या "एक चयनकर्ता का जवाब" मतलब है? एक चयनकर्ता नाम एक समारोह या विधि के लिए एक फैंसी शब्द है । उद्देश्य-C रनटाइम द्वारा ऑब्जेक्ट्स को संदेश भेजने के लिए एक चयनकर्ता का उपयोग किया जाता है । लंबी कहानी कम है, अगर आप शब्द चयनकर्ता पढ़ा है, तो समारोह या विधि लगता है । बेहतर विवरण इस ट्यूटोरियल के दायरे से परे हैं ।

NSNumber

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

ध्यान रखें कि एक NSNumber आवृत्ति से प्राप्त मान में संग्रहीत किया जा रहा है जो मान के साथ संगत करने के लिए की आवश्यकता है । NSNumber वर्ग गतिशील संग्रहीत मान अनुरोधित प्रकार करने के लिए कनवर्ट करने का प्रयास करेगा, लेकिन यह कि NSNumber प्रबंधित कर सकते हैं डेटा प्रकारों के लिए अंतर्निहित सीमाएँ हैं यह कहे बिना चला जाता है ।

मुझे एक उदाहरण के साथ इस वर्णन करते हैं । अपने खेल के मैदान में निंनलिखित कोड स्निपेट जोड़ें ।

Working With the NSNumber Class

हम init (डबल:) के लिए एक डबल मान गुजर द्वारा एक नया NSNumber उदाहरण बना । अगला, हम तीन भिन्न NSNumber विधियों का उपयोग करके संग्रहीत मान का अनुरोध करते हैं. जैसा कि आप देख सकते हैं, परिणाम हमेशा myNumber में संग्रहीत मूल्य को प्रतिबिंबित नहीं करते ।

पाठ सरल है, जब NSNumber उदाहरण में संग्रहित प्रकार का ट्रैक रखने के द्वारा NSNumber का उपयोग करते हुए संगत हो ।

NSString

NSString वर्ग के उदाहरण पाठ की एक स्ट्रिंग बनाने unichar वर्णों की एक सरणी का प्रबंधन । एक नियमित सी स्ट्रिंग है, जो चार वर्णों का प्रबंधन के साथ सूक्ष्म लेकिन महत्वपूर्ण अंतर यह है कि एक unichar चरित्र एक multibyte चरित्र है । यह है स्विफ्ट स्ट्रिंग प्रकार के समान है ।

जैसा कि इसके नाम का तात्पर्य, एक unichar चरित्र आदर्श यूनिकोड पात्रों से निपटने के लिए अनुकूल है । इस कार्यांवयन के कारण, NSString वर्ग अंतर्राष्ट्रीयकरण के लिए आउट-ऑफ़-द-बॉक्स समर्थन प्रदान करता है ।

मैं जोर है कि एक NSString उदाहरण द्वारा प्रबंधित स्ट्रिंग अपरिवर्तनीय है चाहता हूं । इसका अर्थ है कि, एक बार स्ट्रिंग बन जाने के बाद, इसे संशोधित नहीं किया जा सकता । ऐसे PHP, रूबी, या जावास्क्रिप्ट के रूप में अंय भाषाओं से आ रही डेवलपर्स, इस व्यवहार से भ्रमित हो सकता है ।

नींव रूपरेखा भी NSString, NSMutableString, कि आरंभ करने के बाद संशोधित किया जा सकता है की एक परिवर्तनशील उपवर्ग को परिभाषित करता है ।

स्ट्रिंग ऑब्जेक्ट बनाने के लिए विभिन्न तरीके हैं । स्ट्रिंग () विधि NSString वर्ग पर कॉल करने के लिए एक स्ट्रिंग ऑब्जेक्ट बनाने के लिए सबसे आसान तरीका है । यह एक रिक्त स्ट्रिंग ऑब्जेक्ट देता है । NSString की एक पूरी सूची के लिए वर्ग संदर्भ पर एक नज़र रखना ।

स्ट्रिंग वस्तुओं बनाने के लिए एक और आम रास्ता स्ट्रिंग शाब्दिक माध्यम से है । अगले उदाहरण में, एक शाब्दिक स्ट्रिंग stringA को असाइन किया गया है । compile समय पर, कंपाइलर स्ट्रिंग शाब्दिक NSString का एक इंस्टेंस के साथ प्रतिस्थापित करेगा ।

Creating Strings in Swift

सूचना है कि हम है स्विफ्ट प्रकार अनुमान पर भरोसा नहीं stringA के प्रकार निर्धारित करते हैं । दूसरा उदाहरण, stringB, पता चलता है कि क्यों है । यदि हम स्पष्ट रूप से NSString के रूप में stringA के प्रकार निर्दिष्ट नहीं है, स्विफ्ट सोचता है कि हम एक स्ट्रिंग उदाहरण बनाना चाहते हैं । उदाहरण भी दिखाता है कि NSString NSObject से इनहेरिट करता है, जबकि स्ट्रिंग नहीं है । याद रखें कि स्विफ्ट में स्ट्रिंग प्रकार एक संरचना है और संरचनाएं विरासत का समर्थन नहीं करते ।

NSString वर्ग के उदाहरण और तार बनाने और जोड़ तोड़ के लिए वर्ग तरीकों की एक विस्तृत श्रृंखला है और आप शायद ही कभी, अगर, उपवर्ग NSString की जरूरत महसूस होगा ।

चलो NSString और उसके परिवर्तनशील उपवर्ग का पता लगाने, NSMutableString, अपने खेल का मैदान के लिए निंनलिखित टुकड़ा जोड़कर ।

हम दो NSString उदाहरण बनाने के द्वारा शुरू, एक शाब्दिक वाक्यविंयास और एक का उपयोग कर init (स्ट्रिंग:) एक परिवर्तनशील स्ट्रिंग तो एक तर्क के रूप में पहली स्ट्रिंग गुजर द्वारा बनाई गई है । वर्णन करने के लिए कि परिवर्तनशील स्ट्रिंग्स निर्माण के बाद संशोधित किया जा सकता है, stringB परिवर्तनशील स्ट्रिंग और उसके मूल्य मुद्रित करने के लिए जोड़ा जाता है ।

NSArray और NSSet

NSArray वर्ग एक अपरिवर्तनीय, वस्तुओं की सूची के आदेश का प्रबंधन । फाउंडेशन फ्रेमवर्क भी NSArray, NSMutableArray के एक परिवर्तनशील उपवर्ग को परिभाषित करता है । NSArray वर्ग एक सी या स्विफ्ट सरणी NSArray की एक आवृत्ति वस्तुओं का प्रबंधन करता है कि अंतर के साथ बहुत पसंद है । NSArray वर्ग विधियों की एक विस्तृत श्रेणी घोषित करता है जो सरणियों के साथ कार्य करने की सुविधा देता है, जैसे सरणी में ऑब्जेक्ट्स ढूंढना और सॉर्ट करने के लिए विधियाँ ।

यह समझना महत्वपूर्ण है कि NSArray, NSSet, और NSDictionary की आवृत्तियां केवल ऑब्जेक्ट्स संग्रहीत कर सकती हैं । इसका मतलब यह है कि यह संभव नहीं है अदिश प्रकार, सूचक, या संरचनाओं में से किसी भी संग्रह वर्ग या उनके उपवर्गों में स्टोर-संकलक एक त्रुटि फेंक अगर तुम करते हो जाएगा । समाधान NSValue या NSNumber की एक आवृत्ति में अदिश प्रकार, सूचक, और संरचनाओं लपेटो है जैसे हम पहले इस लेख में देखा था ।

NSArray और उसके परिवर्तनशील समकक्ष, NSMutableArray का पता लगाने के लिए अपने खेल के मैदान में निंनलिखित कोड स्निपेट जोड़ें ।

हम init (ऑब्जेक्ट्स:) के उपयोग से एक सरणी बनाने के लिए । यह विधि तर्कों की एक चर संख्या स्वीकार करता है । अगला, हम सरणी में ऑब्जेक्ट्स की संख्या मुद्रित करें और अनुक्रमणिका 2 पर ऑब्जेक्ट के लिए सरणी से पूछें ।

क्योंकि NSMutableArray NSArray से विरासत में, यह NSArray के रूप में बहुत उसी तरह व्यवहार करता है । मुख्य अंतर यह है कि ऑब्जेक्ट्स जोड़े जा सकते है और प्रारंभ करने के बाद सरणी से निकाल दिए जाते हैं ।

आगे बढ़ने से पहले, मैं NSSet के बारे में कुछ शब्द कहना चाहता हूं । यह वर्ग NSArray के समान है, लेकिन मुख्य अंतर यह है कि किसी सेट को प्रबंधित करने वाले ऑब्जेक्ट्स के संग्रह का क्रम नहीं है और यह कि सेट में डुप्लिकेट्स नहीं हो सकते ।

NSSet का लाभ यह है कि इसकी वस्तुओं की क्वेरी तेजी से यदि आप केवल अगर एक वस्तु सेट में निहित है पता करने की आवश्यकता है । नींव ढांचा भी NSOrderedSet को परिभाषित करता है । इस वर्ग के उदाहरणों NSSet का लाभ है, लेकिन यह भी प्रत्येक वस्तु की स्थिति का ट्रैक रखने के लिए ।

NSDictionary

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

रूबी हैश में के रूप में, एक प्रविष्टि की कुंजी की जरूरत नहीं है एक स्ट्रिंग वस्तु से प्रति । यह किसी भी प्रकार का ऑब्जेक्ट हो सकता है जो NSCopying प्रोटोकॉल के अनुरूप हो जब तक कुंजी शब्दकोश में अद्वितीय है । अधिकांश मामलों में, हालांकि, यह कुंजी के रूप में स्ट्रिंग ऑब्जेक्ट्स का उपयोग करने के लिए अनुशंसित है ।

सरणियों की तरह, शब्दकोश एक नल मान संग्रहीत नहीं कर सकता । यदि आप एक नल मान का प्रतिनिधित्व करना चाहते हैं, तो आप NSNull का उपयोग कर सकते हैं । NSNull वर्ग सरणियों, शब्दकोशों, और सेट्स में नल मानों का प्रतीक करने के लिए उपयोग किया जाता है एक सिंगलटन ऑब्जेक्ट को परिभाषित करता है ।

सिंगलटन पैटर्न कई प्रोग्रामिंग भाषाओं में एक महत्वपूर्ण पैटर्न है । यह एक वर्ग के प्रारंभ को एक ऑब्जेक्ट तक सीमित करता है । आप सिंगलटन वस्तुओं के साथ अक्सर जब iOS अनुप्रयोगों के विकास के साथ सौदा होगा ।

NSArray की तरह, नींव ढांचे NSDictionary, NSMutableDictionary के एक परिवर्तनशील उपवर्ग को परिभाषित करता है । वहां एक शब्दकोश आरंभ करने के लिए विभिंन तरीके हैं । निम्न कोड स्निपेट पर एक नज़र डालें.

हम दो अलग NSString एक ही स्ट्रिंग युक्त वस्तुओं की घोषणा । हम तो init (object: forKey:) लागू करके एक शब्दकोश आरंभ । अगले, हम keyB की सामग्री के साथ जुड़े वस्तु के लिए शब्दकोश पूछना और उसके मूल्य प्रिंट ।

यह विवरण पर ध्यान देना जरूरी है । हालांकि हम कुंजी मूल्य जोड़ी की कुंजी के रूप में keyA और keyB कुंजी मूल्य जोड़ी के मूल्य या वस्तु लाने के लिए के रूप में इस्तेमाल किया, शब्दकोश हमें सही वस्तु दिया (एक वैकल्पिक रूप में) । NSDictionary वर्ग काफी चालाक को पता है कि हम स्ट्रिंग "myKey" के साथ जुड़े वस्तु चाहते है । इसका क्या मतलब है? भले ही ऑब्जेक्ट्स keyA और keyB भिन्न ऑब्जेक्ट्स हैं, वे होते हैं जो स्ट्रिंग समान है और जो NSDictionary वर्ग ऑब्जेक्ट को संदर्भित करने के लिए उपयोग करता है ठीक है ।

इससे पहले कि हम इस ट्यूटोरियल लपेटो, मैं तुंहें नेस्टेड शब्दकोशों और arrays और NSMutableDictionary का एक उदाहरण के एक उदाहरण दिखाना चाहते हैं । निम्न कोड अंश दिखाता है कि किसी शब्दकोश में कोई अन्य शब्दकोश हो सकते हैं — या सरणी — और यह भी दिखाता है कि परिवर्तनशील शब्दकोशों के साथ कैसे कार्य करें.

निष्कर्ष

हालांकि हम इस लेख में जमीन का एक बहुत कवर, हम मुश्किल से नींव ढांचे के लिए प्रस्ताव दिया है की सतह खरोंच । यह आवश्यक नहीं है कि हर वर्ग या समारोह नींव ढांचे में परिभाषित करने के लिए iOS के विकास के साथ शुरू हो, हालांकि पता है । आप iOS SDK का पता लगाने के रूप में नींव ढांचे के बारे में अधिक जानेंगे ।

अगले लेख में, हम UIKit ढांचे का पता लगाने और मैं भी भारतीय नौसेना पोत और एक iOS आवेदन के बहिष्कार पर चर्चा ।

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

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.