दिलचस्प पोस्ट
जावा में कितने महत्वपूर्ण अंक फ़्लोट्स और युगल हैं? सी # में एक ऑब्जेक्ट का मेमोरी एड्रेस निरपेक्ष पोजिशनिंग ग्राफ़िक जेपैनल इनफ्रैस जेफ्रेम को रिक्त अनुभाग द्वारा अवरुद्ध किया गया मैं पृष्ठभूमि सेवा के रूप में एक नोड। Js ऐप कैसे चला सकता हूं? एंड्रॉइड: सूची विभाजित में कस्टम विभाजक (या यहां तक ​​कि आइटम) आइटम की सामग्री पर ध्यान केंद्रित कर रहा है MySQL पर निष्पादित अंतिम क्वेरी कैसे दिखाएं? किसी URL में रखने के लिए JSON स्ट्रिंग से बचने के लिए कैसे? पहचान मूल्य प्राप्त करने के लिए मैं INSERT स्टेटमेंट के आउटपुट क्लॉज का उपयोग कैसे करूं? सी # में नेस्टेड नामस्थानों को स्वचालित रूप से आयात करना एंड्रॉइड कैसे त्रिकोण और आयताकार आकार प्रोग्राम को बनाने के लिए? http बुनियादी प्रमाणीकरण "लॉग आउट" एंड्रॉइड में एक गतिविधि शुरू करने से पहले प्रगति संवाद कैसे प्रदर्शित करें? मुझे स्वस्थों के साथ गुणों का उपयोग कब करना चाहिए? एक JSON स्ट्रिंग को डीकोड कैसे करें StringBuilder क्यों स्ट्रिंग है जब?

कोको – NSUserDefaults मान अधिसूचना पर अधिसूचना?

मान लीजिए कि मेरे पास कुंजी @ @ MyPreference है, जिसका संगत मान NSUserDefaults के माध्यम से संग्रहीत है

क्या मूल्य संशोधित होने पर सूचित किया जा सकता है?

या यह बाइंडिंग के माध्यम से किया जा सकता है? (लेकिन इस मामले में, UI तत्व को मान बाध्य करने के बजाय, मैं अपने ऑब्जेक्ट को परिवर्तन के बारे में सूचित करना चाहता हूं, ताकि मैं अन्य कार्य कर सकूं।)

मुझे पता है कि NSUserDefaultsDidChangeNotification को ध्यान में रखा जा सकता है, लेकिन यह एक सब-या-कुछ दृष्टिकोण प्रतीत होता है, और उस विशिष्ट कुंजी-मूल्य-जोड़ी को प्राप्त करने के लिए कोई तंत्र नहीं प्रतीत होता है जो संशोधित किया गया था। (सही करने के लिए स्वतंत्र महसूस करें।)

वेब के समाधान से एकत्रित समाधान "कोको – NSUserDefaults मान अधिसूचना पर अधिसूचना?"

पूरे दिन उत्तर की तलाश में, केवल सवाल पूछने के बाद इसे 10 मिनट मिल जाए …

कुंजी-मान-अवलोकन के माध्यम से एक समाधान में आया:

[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.MyPreference" options:NSKeyValueObservingOptionNew context:NULL]; 

या, अधिक बस (नीचे प्रति टिप्पणी):

 [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:@"MyPreference" options:NSKeyValueObservingOptionNew context:NULL]; 

स्विफ्ट:

 override func viewDidLoad() { super.viewDidLoad() NSUserDefaults.standardUserDefaults().addObserver(self, forKeyPath: "THE KEY", options: NSKeyValueObservingOptions.New, context: nil) } override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) { // your logic } deinit { NSUserDefaults.standardUserDefaults().removeObserver(self, forKeyPath: "THE KEY") } 

और ऐप्पल के कर्मचारी ने यहां एनएसयूएसर डीफॉल्ट्सडिड चेंज नोटिफिकेशन अधिसूचना का उपयोग करने की सलाह दी: https://devforums.apple.com/message/237718#237718

मैं @DenNukem से सहमत हूँ मैं NSKeyValueObservingOptionNew का उपयोग कर रहा था लेकिन इस फ़ंक्शन ने मुझे बीएडीसीसीसीसी कोड = 1 त्रुटि देना शुरू कर दिया, जहां मैंने अन्य ऑब्जेक्ट्स को बचाने के लिए NSUserdefault का उपयोग किया था। यदि आप कुंजी मान पर्यवेक्षक का उपयोग कर रहे हैं, तो बस NSUserDefaults पर ज़ब्बर के मुद्दे के बारे में अवगत रहें

यहां समाधान का लिंक है: NSUserDefaults और केवीओ मुद्दों