Pensé que sabía qué estaba causando este error, pero parece que no puedo entender qué hice mal.
Aquí está el mensaje de error completo que recibo:
Intente establecer un objeto de lista que no sea de propiedad ( "<BC_Person: 0x8f3c140>" ) como un valor NSUserDefaults para personDataArray clave
Tengo una Personclase que creo que se ajusta al NSCodingprotocolo, donde tengo ambos métodos en mi clase de persona:
- (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;
}
En algún momento de la aplicación, se establece NSStringin BC_PersonClass, y tengo una DataSaveclase que creo que está manejando la codificación de las propiedades en mi BC_PersonClass. Aquí está el código que estoy usando de la DataSaveclase:
- (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];
}
Espero que sea suficiente código para darte una idea de lo que estoy tratando de hacer. Una vez más, sé que mi problema radica en cómo estoy codificando mis propiedades en mi clase BC_Person, parece que no puedo entender qué estoy haciendo mal.
¡Gracias por la ayuda!
that I think is conforming to the NSCoding protocoles muy fácil agregar pruebas unitarias para eso, y realmente vale la pena.