एक तालिका को अद्यतन करने के लिए मुझे क्या करने की ज़रूरत है जब एक विधि कहा जाता है जो अंतर्निहित सरणी को अद्यतन करता है तो एक NSArrayController से बाध्य दृश्य देखें? एक उदाहरण यह स्पष्ट कर सकता है।एनएसएआरएआर कंट्रोलर और केवीओ
जब मेरा एप्लिकेशन लॉन्च होता है, तो यह सबवेट्रेन बनाता है। जब सबवेट्रेन शुरू किया जाता है, तो यह एक एकल सबवेकर बनाता है। सबवेकर में एक म्यूटेबल सरणी 'यात्रियों' है। जब एक सबवे कार शुरू की जाती है, यात्रियों की सरणी बनाई जाती है, और कुछ लोगों की वस्तुओं को रखा जाता है (चलो नाम "टिकट कलेक्टर" नामक एक व्यक्ति और दूसरा, "बेघर लड़का" नाम दिया गया है)। ये लोग हमेशा सबवेकर पर रहते हैं, इसलिए मैं उन्हें प्रारंभिकरण में बना देता हूं और उन्हें यात्रियों की सरणी में जोड़ता हूं।
आवेदन के जीवन के दौरान लोग कार पर चढ़ते हैं। सबवेकर पर 'एड पैसेंजर' कहा जाता है, जिसमें व्यक्ति एक तर्क के रूप में पारित होता है।
मेरे पास एक NSArrayController subwayTrain.subwayCar.passengers से जुड़ा हुआ है, और लॉन्च होने पर मेरा टिकट कलेक्टर और बेघर लड़का ठीक दिखता है। लेकिन जब मैं [सबवेकर एड पैसेंजर:] का उपयोग करता हूं, तो तालिका दृश्य अद्यतन नहीं होता है। मैंने पुष्टि की है कि यात्री निश्चित रूप से सरणी में जोड़ा जाता है, लेकिन गुई में कुछ भी अपडेट नहीं होता है।
मुझे गलत क्या करने की संभावना है? मेरा वृत्ति यह है कि यह केवीओ से संबंधित है - ऐड नियंत्रक को अपडेट करने के बारे में पता नहीं है जब ऐडपैसेंजर को कॉल किया जाता है (भले ही ऐडपैसेंजर कॉल करता है [यात्रियों को जोड़ता है:]। मैं यहां क्या गलत हो सकता हूं - अगर यह मदद करता है तो मैं कोड पोस्ट कर सकता हूं।
किसी को बाहर करने में मदद करने के लिए तैयार करने के लिए धन्यवाद।
अद्यतन
तो, यह पता चला है कि मैं इस
करने से[seatedPlayers addObject:person];
addPassenger विधि से बदलकर काम करने के लिए प्राप्त कर सकते हैं 210
NSMutableSet *newSeatedPlayers = [NSMutableSet setWithSet:seatedPlayers];
[newSeatedPlayers addObject:sp];
[seatedPlayers release];
[self setSeatedPlayers:newSeatedPlayers];
मुझे लगता है कि ऐसा इसलिए है क्योंकि मैं [स्वयं सेटसेटेड प्लेयर्स] का उपयोग कर रहा हूं। क्या यह करने का सही तरीका है? यह सरणी की प्रतिलिपि बनाने के लिए बहुत ही बोझिल लगता है, पुराने को छोड़ दें, और प्रतिलिपि अपडेट करें (जैसा कि मौजूदा सरणी में जोड़ने के विपरीत है)।
तालिका दृश्य नियंत्रक को कैसे बाध्य किया जाता है? क्या आपके पास प्रत्येक सारणी स्तंभ 'subwayTrain.subwayCar.passengers' की संपत्ति से जुड़ा हुआ है (उदा। कॉलम नाम 'subwayTrain.subwayCar.passengers.name' से जुड़ा हुआ है)? – outis
वास्तव में हाँ। और जब यात्री लॉन्च होते हैं तो यात्री नाम दिख रहे हैं। –