iphone - Problem with saving custom object into NSUserDefaults -


मेरे पास निम्न के साथ एक कस्टम ऑब्जेक्ट क्लास है। एम:

  @implementation FolderObject @ फ़ोल्डर को संश्लेषित करेंटेल्ट, फ़ोल्डरसंसाधन; // शीर्षक NSString है, सामग्री सरणी है - (आईडी) init {self = [super init]; अगर (स्वयं) {} स्वयं वापस लौटते हैं; } - (शून्य) एन्कोडविथकोडर: (एनकोडर *) कोडर {[सांकेतिक शब्दों में कहें एनकोड ऑब्जेक्ट: फोल्डर्स कंटेंट फॉरके: @ "फोल्डर्स कंटेंट्स"]; [कोडक एन्कोड ऑब्जेक्ट: फ़ोल्डरटाइटल फॉरके: @ "फ़ोल्डरटाइटल"]; } - (आईडी) initWithCoder: (NSCoder *) सांकेतिक शब्दों में बदलनेवाला {आत्म = [[FolderObject alloc] init]; अगर (आत्म! = शून्य) {फ़ोल्डर्ससंसाधन = [सांकेतिक शब्दों में कहें decodeObjectForKey: @ "फ़ोल्डर्ससंसाधन"]; FolderTitle = [सांकेतिक शब्दों में कहें decodeObjectForKey: @ "folderTitle"]; } स्वस्थ वापसी; } @end   

यहां मैं कैसे फ़ोल्डर का उपयोग (कुछ अन्य वर्ग में) है:

  FolderObject * newFolder = [FolderObject alloc]; NewFolder.folderTitle = [textView पाठ]; NewFolder.folderContents = [[NSMutableArray alloc] init]; [फ़ोल्डर्स जोड़ें ऑब्जेक्ट: न्यूफ़ोल्डर];   

यहां मैं कैसे बचा सकते हैं और NSUserDefaults से कस्टम वस्तु पुनः प्राप्त है:

  - (शून्य) viewDidDisappear: (bool) एनिमेटेड {[[NSUserDefaults standardUserDefaults] SetObject: [NSKeyedArchiver archivedDataWithRootObject: फ़ोल्डर्स] के लिए: @ "फ़ोल्डर्स"]; [[NSUserDefaults मानक यूसर डीफॉल्ट्स] सिंक्रनाइज़ करें]; } - (शून्य) दृश्यविलएपीपर: (BOOL) एनिमेटेड {NSUserDefaults * currentDefaults = [NSUserDefaults StandardUserDefaults]; एनएसडीटा * डाटा प्रतिवेदन प्रस्तुत करनाअरेरे फोल्डर्स = [वर्तमान डीफॉलॉन्ज ऑब्जेक्टफ़ोरी: @ "फोल्डर्स"]; अगर (dataRepresentingSavedArrayFolders = शून्य!) {NSArray * oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData: dataRepresentingSavedArrayFolders]; अगर (पुराना सवेरेअरे! = शून्य) {फ़ोल्डर्स = [[एनएसएमयूटीएबलएआरआरएओएल] इनइटवेटअरेरे: पुरानी सहेजेअरेरे]; } और {फ़ोल्डर्स = [[एनएसएमयूटीएबलएआरआरएआरओएल] आईएनआईटी]; }} और फ़ोल्डर्स = [[एनएसएमयूटीएबलएआरआरएआरओएल] आईएनआईटी];   

और अंत में यह मुद्दा है जहां यह मुद्दा है:

  फ़ोल्डरऑब्जेक्ट * नयाफ़ोल्डर = [फ़ोल्डर्स ऑब्जेक्टऐटइंडएक्स: इंडेक्सपाथ.रो]; [फ़ोल्डर शीर्षकलेबल सेट टेक्स्ट: newFolder.folderTitle]; दूसरी लाइन पर, मुझे रनटाइम के दौरान एक त्रुटि मिलती है, लेकिन केवल ऐप से बाहर निकलने और वापस आने के बाद। जब मैं फ़ोल्डर्स सरणी में ऑब्जेक्ट जोड़ता हूं और ऊपर कॉल करता हूं, कोई समस्या नहीं। लेकिन अगर मैं ऐप से बाहर निकलते और वापस आने, तो समस्याओं:  
  - [__ NSArrayM isEqualToString:]: 09:: 24.290 MyApp [43,504 गैर मान्यता प्राप्त चयनकर्ता उदाहरण 0x4b9e400 2011-09-02 08 के लिए भेजा: B303] *** न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से एप्लिकेशन समाप्त: -    

अंदर initWithCoder: अपने FolderObject के लिए आप उचित मान नहीं रखते हैं जो आपके क्रैश में परिणाम देगा। सुनिश्चित करें कि आप इस तरह संपत्ति का उपयोग कर रहे हैं।

  - (आईडी) initWithCoder: (NSCoder *) सांकेतिक शब्दों में बदलनेवाला {आत्म = [सुपर init]; if (! स्वयं = शून्य) {// डॉट नोटेशन (। आत्म) ठीक से बनाए रखने या // जब तक यह घोषित किया जाता है के रूप में बनाए रखने या कॉपी अपने स्ट्रिंग की प्रतिलिपि बनाएगा (मैं नकल की सलाह देते हैं) self.foldersContents = [सांकेतिक शब्दों में बदलनेवाला decodeObjectForKey: @ " foldersContents "]; Self.folderTitle = [सांकेतिक शब्दों में कहें decodeObjectForKey: @ "folderTitle"]; } स्वस्थ वापसी; }    

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -