दिलचस्प पोस्ट
सीएसएस पाठ्य-सजावट संपत्ति को बाल तत्व द्वारा अधिलिखित नहीं किया जा सकता HTTP हेडर लाइन ब्रेक शैली आप आर में "<< -" (स्क्रॉपिंग असाइनमेंट) का उपयोग कैसे करते हैं? सी # मुझे एक अपरिवर्तनीय शब्दकोश देने का एक तरीका है? AngularJS के साथ कैसे $ http समकालिक कॉल करें निर्धारित करें कि क्या कोई तत्व jQuery के साथ एक सीएसएस वर्ग है अजगर नकली अनुरोध और प्रतिक्रिया क्षैतिजस्क्रॉलदृश्य: जब नया दृश्य जोड़े जाते हैं तो ऑटो-स्क्रॉल समाप्त हो जाता है? XPath – विशिष्ट प्रकार के किसी भी बच्चे के साथ नोड प्राप्त करें जावा के लिए माइग्रेशन LinkedList या ArrayList पर हॅशमैप का उपयोग कब और उपाध्यक्ष के विपरीत क्यों malloc मेरे कंप्यूटर पर स्मृति का उपयोग नहीं कर रहा है? सीतनिद्रा में होना, iBatis, जावा ईई या अन्य जावा ओआरएम उपकरण MySQL धुरी सारणी स्ट्रैटस 2 में डायनामिक यूआरएल रीडायरेक्ट कैसे करें?

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

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

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

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

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

Solutions Collecting From Web of "कोको – 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 और केवीओ मुद्दों