ios - Observe value changes of NSDictionary inside NSArray -
यहाँ मेरा NSArray
कार टाइप ({iselected = 0 ; KFieldName = "सभी प्रकार"; kObjectValue = 0; kObjectValueText = सभी;}, {है चयनित = 0; केफ़िल्डनाम = "4 सीट्स"; kObjectValue = 4; kObjectValueText = "4 सीटें";}, {1 चयनित है; kFieldName = "7 सीटें", कोबाइवएल्ट = 7; kObjectValueText = "7 सीटें";}) मैं iselected क्षेत्र में परिवर्तन कैसे देख सकता हूँ? मैंने अपने कोड में केवीओ का उपयोग किया था लेकिन यह काम नहीं करता है।
कार टाइप एक NSArray संपत्ति संदर्भ
- (शून्य) दृश्यडिडलोड {[सुपर व्यूडिडलोड]; [संदर्भ addObserver: के लिए स्वयं केपैथ: @ "कार टाइप" विकल्प: एनएसकेएवेव्वेश ऑब्सेशंसओवेशननई संदर्भ: NULL]; } - (शून्य) निरीक्षण वैल्यू फोरेकेपथ: (एनएसएसटीइंग *) कीपैब का ऑब्जेक्ट: (आईडी) ऑब्जेक्ट परिवर्तन: (एनएसड्राइज़मेंट *) परिवर्तन संदर्भ: (शून्य *) संदर्भ {यदि ([केपैथ एईएक्वलटॉस्ट्रिंग: @ "कार टाइप"]) {एनएसएलॉग (@ " कार टाइप बदला "); }} // dealloc निकास पर्यवेक्षक
में परिवर्तन को देखने के लिए चुने गए < / कोड> प्रत्येक सरणी में शब्दकोश के लिए, आपको एक पर्यवेक्षक के रूप में हर शब्द के साथ सरणी में पंजीकरण करना होगा । जैसा कि मैंने में कहा है:
आप NSArray के साथ कुशलता से कर सकते हैं उदाहरण के विधि addObserver: toObjectsAtIndexes: forKeyPath: विकल्प: संदर्भ: , लेकिन अगर सरणी स्वयं अस्थिर है, फिर भी आप उस कुंजी के लिए किसी भी नए शब्दकोशों के साथ पंजीकृत होने जा रहे हैं, जो बाद में सरणी में जोड़े जाते हैं (और जब एक शब्दकोश को सरणी से निकाल दिया जाता है तो रद्द करें)।
यह अंतिम भाग वास्तव में चुनौतीपूर्ण हो सकता है कई परिस्थितियों में, पूरी तरह से छोड़ देना सबसे अच्छा हो सकता है और सिर्फ एक कस्टम क्लास का उपयोग कर सकता है जो एक अधिसूचना का उपयोग करता है, जब इसे उत्परिवर्तित किया जाता है (एक NSDictionary के बजाय, और केवीओ के बजाय)।
Comments
Post a Comment