एक कोरडेटा इकाई की कल्पना करें (जैसे नामित searchEngine
)। NSManagedObjectContext इस इकाई के कुछ "उदाहरण" का प्रबंधन करता है।
अंत उपयोगकर्ता अपने "मानक खोजइंजिन"
को NSPopupButton
के साथ चुनने में सक्षम होने जा रहा है।
NSPopupButton का चयनित ऑब्जेक्ट
को NSUserDefaults में बाध्य किया जाना चाहिए।
समस्या:
1)
@try {save}a)
यदि आप चयनित "उदाहरण" को सीधे NSUserDefaults में सहेजने का प्रयास करते हैं तो ऐसा कुछ आता है:- [NSUserDefaults सेट ऑब्जेक्ट: forKey:]: गैर-संपदा मान को सम्मिलित करने का प्रयास '(इकाई: खोजइंजिन; आईडी: 0x156f60; डेटा: {url = ""; कुछ गुण = 1; नाम = "google";})' वर्ग 'खोज इंजन'। '
b)
यदि आप "उदाहरण" को एनएसडीटा में बदलने की कोशिश करते हैं तो यह:- [searchEngine encodeWithCoder:]: अपरिचित चयनकर्ता को उदाहरण के लिए भेजा गया 0x1a25b0तो किसी भी विचार कैसे एक plist- संगत डेटा में इस संस्थाओं को पाने के लिए?
2)
@try {registerDefaults}
आमतौर पर
registerDefaults:
विधि+ (शून्य) प्रारंभ में
लागू की जाती है। यहां समस्या यह है कि कोरडाटा अपने डाटाबेस से बचाई गई संस्थाओं को लोड करने से पहले इस विधि को कहा जाता है। तो मैं एक डिफ़ॉल्ट को कोई भी मौजूदा ऑब्जेक्ट में सेट नहीं कर सकता, ठीक है?
मुझे पता है, लंबे प्रश्न ... लेकिन: {{मुझे प्रदान करें: विवरण] }; डी
आप एक कोर डेटा इकाई की कोशिश और संग्रह नहीं करना चाहते हैं और उसे संग्रहीत करना चाहते हैं। इसके बजाय, आप कुंजी या किसी अन्य ज्ञात विशेषता को संग्रहीत करेंगे और इसका उपयोग तब शुरू होगा जब इकाई शुरू हो जाएगी।
कुछ उदाहरण कोड (उदाहरण में पोस्ट किए गए उदाहरण से थोड़ा संशोधित):
<पूर्व> NSManagedObjectContext * moc = [स्वयं प्रबंधित ऑब्जेक्ट कॉन्टैक्स]; NSEntityDescription * entityDescription = [NSEntityDescription EntityForName: @ "खोज इंजन" में प्रबंधित ऑब्जेक्ट कॉन्टैक्ट: एमओसी]; NSFetchRequest * अनुरोध = [[[NSFetchRequest alloc] init] autorelease]; [अनुरोध सेटएन्टीटी: एंटिडाइस्क्रिप्शन]; NSPredicate * predicate = [NSPredicate predicateWithFormat: @ "इंजननाम की तरह [सी] '% @'", चयनित इंजन नाम]; [अनुरोध करने के लिए प्रमाणन: गिनती]; NSError * त्रुटि = शून्य; NSArray * array = [moc executeFetchRequest: अनुरोध त्रुटि: & amp; त्रुटि]; अगर (सरणी == शून्य) {// त्रुटि के साथ डील ...}
इस तरह से आप उपयोगकर्ता डिफ़ॉल्ट में नाम सहेजते हैं और आवश्यक होने पर इकाई प्राप्त करते हैं।
< / div>
Comments
Post a Comment