iOS
कुंजी मूल्य कोडिंग-कुंजी मान अवलोकन
खोज…
टिप्पणियों
केवीसी : - की-वैल्यू कोडिंग
आम तौर पर उदाहरण चर को संपत्तियों या एक्सेसरों के माध्यम से एक्सेस किया जाता है लेकिन केवीसी स्ट्रिंग्स के रूप में चर तक पहुंचने का एक और तरीका देता है। इस तरह आपकी कक्षा एक शब्दकोश की तरह काम करती है और उदाहरण के लिए आपकी संपत्ति का नाम "उम्र" महत्वपूर्ण हो जाता है और मूल्य उस संपत्ति के लिए महत्वपूर्ण हो जाता है।
For example, you have employee class with "age" property. Normally we access like this.
emp.age = @”20″;
NSString age = emp.age;
But KVC works like this:
[emp valueForKey:@"age"];
[emp setValue:@"25" forKey:@"age"];
KVO : - की-वैल्यू ऑब्जर्वर
वह तंत्र जिसके माध्यम से किसी भी संपत्ति में परिवर्तन होने पर वस्तुओं को अधिसूचित किया जाता है, केवीओ कहलाता है। Ex.:keyboard अधिसूचना
उदाहरण के लिए, व्यक्ति ऑब्जेक्ट को नोटिफिकेशन प्राप्त करने में रुचि रखता है जब BankAccount ऑब्जेक्ट में अकाउंटबेलेंस संपत्ति को बदल दिया जाता है। इसे प्राप्त करने के लिए, व्यक्ति वस्तु को एक AddObserver: forKeyPath: विकल्प: संदर्भ: संदेश भेजकर बैंकअकाउंट के खाते की संपत्ति के पर्यवेक्षक के रूप में पंजीकृत होना चाहिए।
केवीओ अवलोकन के लिए संदर्भ का उपयोग
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
संदर्भ महत्वपूर्ण है यदि आप दूसरों के लिए अपनी कक्षा का उपयोग करने के लिए जहाज करते हैं। कॉनटेक्स्ट आपकी कक्षा पर्यवेक्षक को यह सत्यापित करने देता है कि यह आपके पर्यवेक्षक को कहा जा रहा है।
पर्यवेक्षक के पास नहीं होने के साथ समस्या यह है कि यदि कोई आपकी कक्षा को उप-वर्ग करता है और एक ही वस्तु, एक ही कुंजी के लिए एक पर्यवेक्षक पंजीकृत करता है और वह एक संदर्भ पास नहीं करता है, तो सुपर क्लास पर्यवेक्षक को कई बार बुलाया जा सकता है।
एक चर जो आपके उपयोग के लिए अद्वितीय और आंतरिक है, एक अच्छा संदर्भ है।
अधिक जानकारी के लिए।
NSObject उपवर्ग की एक संपत्ति का अवलोकन करना
अधिकांश KVO और KVC कार्यक्षमता पहले से ही सभी NSObject उपवर्गों पर डिफ़ॉल्ट रूप से लागू होती है।
किसी व्यक्ति के नाम के पहले firstName एक संपत्ति का अवलोकन करना शुरू करने के लिए किसी व्यक्ति का नाम personObject
[personObject addObserver:self
forKeyPath:@"firstName"
options:NSKeyValueObservingOptionNew
context:nil];
ऑब्जेक्ट जो उपरोक्त कोड में self को संदर्भित करता है, उसके बाद एक observeValueForKeyPath:ofObject:change:context: प्राप्त observeValueForKeyPath:ofObject:change:context: संदेश जब भी मनाया गया मुख्य पथ बदलता है।
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary<NSString *,id> *)change
context:(void *)context
{
NSLog(@"new value of %@ is: %@", keyPath, change[NSKeyValueChangeNewKey]);
}
"की-पाथ" एक केवीसी शब्द है। NSObject उपवर्ग डिफ़ॉल्ट रूप से KVC कार्यक्षमता को कार्यान्वित करते हैं।
_firstName नाम का एक इंस्टेंस वेरिएबल @"firstName" कुंजी पथ द्वारा सुलभ होगा।
नाम के एक गेटर विधि firstName जब तक पहुँचने बुलाया जाएगा @"firstName" कुंजी पथ, वहाँ जा रहा है की परवाह किए बिना _firstName उदाहरण चर या setFirstName सेटर विधि।