5

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

उत्तर

1

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

4

नियंत्रक कुंजी पॉप-अप मेनू आपको यह जानने में मदद करने का एक तरीका है कि नियंत्रक कुंजी (आमतौर पर एक एनएसएआरएआर कंट्रोलर, एनएसओब्जेक्ट कंट्रोलर या एनएसटीआर कंट्रोलर) प्रस्तुत करता है।

सबसे अच्छा उदाहरण NSArrayControllers की selection कुंजी है, जिसमें चयनित ऑब्जेक्ट्स का सेट शामिल है। भ्रमित करने वाला क्या है NSObjectController भी 'चयन' कुंजी प्रस्तुत करता है, हालांकि नियंत्रक केवल एक ही वस्तु को नियंत्रित कर सकता है (इसलिए चयन = ऑब्जेक्ट)।

मैं मानता हूं कि यह बिल्कुल स्पष्ट नहीं है। जब मैंने अपनी ऑब्जेक्ट प्रोग्रामेटिक रूप से बाध्य किया (यानी bind:toObject:withKeyPath:options: विधि का उपयोग करके) मैंने व्यक्तिगत रूप से इसे समझना शुरू कर दिया।

4

[प्रतिलिपि बनाई जा रही my answer on another question ...]

नियंत्रक कुंजी (नियंत्रक वस्तु की संपत्ति) आप के लिए बाध्य कर रहे हैं के लिए महत्वपूर्ण है। मॉडल कुंजी पथ वह महत्वपूर्ण पथ है जिसके द्वारा बाध्य वस्तु मॉडल वस्तुओं को स्ट्रिंग या छवियों, या अन्य मॉडल ऑब्जेक्ट्स (यानी, मॉडल में ड्रिल करने) के लिए अधिक मूल वस्तुओं के लिए पूछ सकती है।

एक उदाहरण: मान लीजिए कि आपके पास एक सरणी नियंत्रक में एक व्यक्ति वस्तुएं हैं, और प्रत्येक व्यक्ति के पास name है। आप सरणी नियंत्रक, नियंत्रक कुंजी arrangedObjects (इस प्रकार मॉडल ऑब्जेक्ट्स प्राप्त कर रहे हैं), मॉडल कुंजी पथ name (इस प्रकार मान ऑब्जेक्ट प्राप्त कर रहे हैं) में एक तालिका कॉलम बांधें।

एक और जटिल उदाहरण: मान लें कि आपके पास विभागों का सरणी नियंत्रक है। प्रत्येक विभाग में व्यक्ति (विभाग में कर्मचारी) होते हैं। आप अपने पीपुल्स एरे नियंत्रक को डिपार्टमेंट कंट्रोलर, कंट्रोलर कुंजी arrangedObjects (डिपार्टमेंट मॉडल ऑब्जेक्ट्स प्राप्त करना), मॉडल कुंजी पथ @distinctUnionOfObjects.employees (व्यक्ति मॉडल ऑब्जेक्ट्स प्राप्त करना) में बाध्य कर सकते हैं, और उसके बाद लोगों के नियंत्रक को नियंत्रक कुंजी arrangedObjects पर एक तालिका कॉलम बांध सकते हैं, मॉडल कुंजी पथ name

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

+0

डेव गैलाघर: असल में नहीं। दोनों उदाहरण एक वस्तु तालिका के हैं, व्यक्ति वस्तुओं की सूची। पूर्व उदाहरण में ये मॉडल के शीर्ष स्तर के रूप में हैं; बाद के उदाहरण में सभी व्यक्ति केवल विभागों के माध्यम से सुलभ हैं।दो उदाहरण बताते हैं कि बाइंडिंग का उपयोग करके दोनों मॉडलों के लिए एक ही सूची को आसानी से कार्यान्वित किया जा सकता है। –

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