I'm trying to pass data to detail page upon clicking a cell inside UITabelViewCell using NSCoding Protocol
NSCoder *coder =[[NSCoder alloc] init];
[coder encodeObject:@"value" forKey:@"title"];
[coder encodeObject:cell.remainderContentLabel.text forKey:@"content"];
[coder encodeObject:cell.remainderDateTimeLabel.text forKey:@"datetime"];
[coder encodeObject:cell.remainterImageView.image forKey:@"image"];
RemainderDetailViewController *detailVC = [[RemainderDetailViewController alloc] initWithCoder:coder];
[self.navigationController pushViewController:detailVC animated:YES];
But it is crashing msg is
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -encodeObject:forKey: cannot be sent to an abstract object of class NSCoder: Create a concrete instance!'
In detail page decoding is done by
- (id) initWithCoder:(NSCoder *) aDecoder {
if(self = [super initWithCoder:aDecoder]) {
_remainderTitle.text = [aDecoder decodeObjectForKey:@"title"];
_remainderDetails.text = [aDecoder decodeObjectForKey:@"content"];
_dateAndTime.text = [aDecoder decodeObjectForKey:@"datetime"];
_remainderImage.image = [aDecoder decodeObjectForKey:@"image"];
}
return self;
}
How to use
- (void)encodeWithCoder:(NSCoder *)encoder
What is wrong im doing? Class is confirmed to NSCopying protocol