के उप-वर्ग पर एनएससीओडी का उपयोग करना मैं डेटा निरंतरता के तरीके के रूप में एक कस्टम क्लास को संग्रह/अनारक्षित करने के लिए एनएससीओडी का उपयोग कर रहा हूं। यह ठीक काम करता है अगर ऑब्जेक्ट NSObject का उप-वर्ग है, लेकिन मेरे पास ऑब्जेक्ट्स भी हैं जो कस्टम ऑब्जेक्ट्स के उप-वर्ग हैं। क्या मुझे initWithCoder को बदलने की आवश्यकता है: विधि के साथ ही encodeWithCoder? अभी, गुण जो उपclass एन्कोड/डीकोड ठीक के लिए विशिष्ट हैं, लेकिन सुपरक्लास से उत्तराधिकारी उत्तराधिकारी गुण नहीं है। कोई विचार?कस्टम वर्ग
@interface NewsItem : NSObject <NSCoding, NSCopying> {
//properties for the super class here
}
@implementation NewsItem
- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:itemName forKey:kItemNameKey];
//etc etc
}
- (id)initWithCoder:(NSCoder *)coder {
if ((self = [super init]))
{
self.itemName = [coder decodeObjectForKey:kItemNameKey];
//etc etc
}
return self;
}
-(id)copyWithZone:(NSZone *)zone {
NewsItem *copy = [[[self class] allocWithZone: zone] init];
copy.itemName = [[self.itemName copy] autorelease];
//etc etc
return copy;
}
और उपवर्ग:
@interface File : NewsItem {
NSString *fileSizeString;
//etc etc
}
@implementation File
- (void)encodeWithCoder:(NSCoder *)coder {
[super encodeWithCoder:coder]; //added this, but didn't seem to make a difference
[coder encodeObject:fileSizeString forKey:kFileSizeStringKey];
//etc etc
}
- (id)initWithCoder:(NSCoder *)coder {
if ((self = [super init]))
{
self.fileSizeString = [coder decodeObjectForKey:kFileSizeStringKey];
//etc etc
}
return self;
}
-(id)copyWithZone:(NSZone *)zone {
File *copy = (File *)[super copyWithZone:zone];
copy.fileSizeString = [[self.fileSizeString copy] autorelease];
//etc etc
return copy;
}
मेरे पास है, लेकिन एक सही का निशान अतः give..and में NSCoding तरीकों में से सुपर क्लास कार्यान्वयन कह रहा है कि तुम्हारा पुराना है। धन्यवाद। –