Tôi nghĩ rằng tôi biết những gì đã gây ra lỗi này, nhưng tôi dường như không thể tìm ra những gì tôi đã làm sai.
Đây là thông báo lỗi đầy đủ tôi đang nhận được:
Cố gắng đặt đối tượng không thuộc tính danh sách ( "<BC_Person: 0x8f3c140>" ) làm giá trị NSUserDefaults cho key personDataArray
Tôi có một Person
lớp mà tôi nghĩ là phù hợp với NSCoding
giao thức, nơi tôi có cả hai phương thức này trong lớp người của mình:
- (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;
}
Tại một số điểm trong ứng dụng, phần NSString
trong BC_PersonClass
được đặt và tôi có một DataSave
lớp mà tôi nghĩ là đang xử lý mã hóa các thuộc tính trong của tôi BC_PersonClass
. Đây là mã tôi đang sử dụng từ DataSave
lớp:
- (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];
}
Tôi hy vọng đây là mã đủ để cung cấp cho bạn một ý tưởng o những gì tôi đang cố gắng làm. Một lần nữa tôi biết vấn đề của mình nằm ở cách tôi mã hóa các thuộc tính của mình trong lớp BC_Person, dường như tôi không thể hiểu được mặc dù tôi đang làm gì sai.
Cảm ơn đã giúp đỡ!
that I think is conforming to the NSCoding protocol
thật dễ dàng để thêm thử nghiệm đơn vị cho điều đó, và thực sự đáng giá.