मुझे लगा कि मुझे पता है कि इस त्रुटि के कारण क्या था, लेकिन मैं यह पता नहीं लगा सकता कि मैंने क्या गलत किया।
यहाँ पूर्ण त्रुटि संदेश मिल रहा है:
गैर-संपत्ति-सूची ऑब्जेक्ट सेट करने का प्रयास करें ( "<BC_Person: 0x8f3c140>" ) प्रमुख व्यक्तिडेटा के लिए एक NSUserDefaults मान के रूप में
मेरे पास एक Person
वर्ग है जो मुझे लगता है कि NSCoding
प्रोटोकॉल के अनुरूप है , जहां मेरे पास मेरे व्यक्ति वर्ग में ये दोनों विधियां हैं:
- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:self.personsName forKey:@"BCPersonsName"];
[coder encodeObject:self.personsBills forKey:@"BCPersonsBillsArray"];
}
- (id)initWithCoder:(NSCoder *)coder {
self = [super init];
if (self) {
self.personsName = [coder decodeObjectForKey:@"BCPersonsName"];
self.personsBills = [coder decodeObjectForKey:@"BCPersonsBillsArray"];
}
return self;
}
अनुप्रयोग में कुछ बिंदु पर, NSString
में BC_PersonClass
सेट किया गया है, और मैं एक है DataSave
वर्ग मुझे लगता है कि मेरी में गुण एन्कोडिंग से निपटने है BC_PersonClass
। यहाँ वह कोड है जो मैं DataSave
कक्षा से उपयोग कर रहा हूँ :
- (void)savePersonArrayData:(BC_Person *)personObject
{
// NSLog(@"name of the person %@", personObject.personsName);
[mutableDataArray addObject:personObject];
// set the temp array to the mutableData array
tempMuteArray = [NSMutableArray arrayWithArray:mutableDataArray];
// save the person object as nsData
NSData *personEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:personObject];
// first add the person object to the mutable array
[tempMuteArray addObject:personEncodedObject];
// NSLog(@"Objects in the array %lu", (unsigned long)mutableDataArray.count);
// now we set that data array to the mutable array for saving
dataArray = [[NSArray alloc] initWithArray:mutableDataArray];
//dataArray = [NSArray arrayWithArray:mutableDataArray];
// save the object to NS User Defaults
NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
[userData setObject:dataArray forKey:@"personDataArray"];
[userData synchronize];
}
मुझे आशा है कि यह आपको एक ओ कोड देने के लिए पर्याप्त है कि मैं क्या करने की कोशिश कर रहा हूं। फिर से मुझे पता है कि मेरी समस्या यह है कि मैं अपने बीसी_पर्सन वर्ग में अपनी संपत्तियों को कैसे कूट रहा हूं, मैं अभी यह पता नहीं लगा सकता कि क्या मैं गलत हूं।
सहायता के लिए धन्यवाद!
that I think is conforming to the NSCoding protocol
इसके लिए इकाई परीक्षण जोड़ना सुपर आसान है, और वास्तव में इसके लायक है।