2010-02-02 9 views
15

मैं अपना खुद का कस्टम क्लास धारावाहिक कैसे बना सकता हूं? मैं विशेष रूप से इसे आईफोन पर एक फाइल में लिखना चाहता हूं, बस प्लिस्ट और आप क्लास सिर्फ एक साधारण इंस्टेंस क्लास है, बस एनएसएसटींग्स ​​और शायद एनएसयूआरएल।उद्देश्य-सी/आईफोन में एक कस्टम क्लास Serializable बनाओ?

उत्तर

33

आप NSCoding protocol को लागू करना चाहते हैं। InitWithCoder कार्यान्वित करें: और एन्कोड WithCoder: और आपकी कस्टम कक्षा NSKeyedArchiver और NSKeyedUnarchiver के साथ काम करेगी।

आपका initWithCoder: इस तरह दिखना चाहिए:

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    if(self = [super init]) // this needs to be [super initWithCoder:aDecoder] if the superclass implements NSCoding 
    { 
     aString = [[aDecoder decodeObjectForKey:@"aString"] retain]; 
     anotherString = [[aDecoder decodeObjectForKey:@"anotherString"] retain]; 
    } 
    return self; 
} 

और encodeWithCoder:

- (void)encodeWithCoder:(NSCoder *)encoder 
{ 
    // add [super encodeWithCoder:encoder] if the superclass implements NSCoding 
    [encoder encodeObject:aString forKey:@"aString"]; 
    [encoder encodeObject:anotherString forKey:@"anotherString"]; 
} 
+1

+1 आप की आवश्यकता हो सकती 'कॉल करने के लिए [सुपर initWithCoder: aDecoder]' या '[सुपर encodeWithCoder: एनकोडर ] 'उस वर्ग के आधार पर जो आप उपclassing कर रहे हैं। =) –

+0

दोह! अच्छा खोज - तय। –

+0

मेरे पास सर्वोत्तम व्यवहारों के बारे में कोई सवाल है ... क्या मुझे कक्षा को धारावाहिक बनाना चाहिए या क्या मैं इसे यूआई डेवलपर को किसी वांछित आउटपुट में क्रमबद्ध करने के लिए छोड़ सकता हूं? – Patricia

संबंधित मुद्दे