Je pensais que je savais ce qui était la cause de cette erreur, mais je n'arrive pas à comprendre ce que je fait de mal.
Voici l'intégralité du message d'erreur que j'obtiens:
Tentative de définition d'une non-propriété des objets de la liste ( "<BC_Person: 0x8f3c140>" ) comme un NSUserDefaults valeur pour la clé personDataArray
J'ai un Person
de la classe qui, je pense, est conforme à l' NSCoding
protocole, où j'ai à la fois de ces méthodes dans ma classe personne:
- (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;
}
À un certain moment dans l'application, l' NSString
dans la BC_PersonClass
est réglé, et j'ai un DataSave
de la classe qui, je pense, est de la manipulation de l'encodage des propriétés dans mon BC_PersonClass
.
Voici le code, je suis à l'aide de l' DataSave
classe:
- (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];
}
J'espère que c'est assez de code pour vous donner une idée de l'o ce que je suis en train de faire. Encore une fois je sais que mon problème se situent à la façon dont je suis l'encodage de mes propriétés dans mon BC_Person de classe, je n'arrive pas à comprendre ce que si je fais mal.
Merci pour l'aide!