【发布时间】:2017-07-31 12:17:21
【问题描述】:
我正在尝试在使用 NSCoding 协议单击 UITabelViewCell 内的单元格时将数据传递到详细信息页面
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];
但它是崩溃的味精是
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'*** -encodeObject:forKey: 无法发送到 NSCoder 类的抽象对象:创建一个 具体实例!'
详细页面解码由
完成- (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;
}
如何使用
- (void)encodeWithCoder:(NSCoder *)encoder
我做错了什么?类被 NSCopying 协议确认
【问题讨论】:
-
stackoverflow.com/questions/22168753/… ?但是要在 UITableViewCell 中传递数据,我不明白为什么要使用 NSCoding。
-
何时调用此 encodeWithCoder?我怎样才能推动 VC
-
详情页需要在很多地方重复使用。所以我可以简单地从任何地方编写 initWithCoder
-
我更仔细地阅读了您的代码,
RemainderDetailViewController代码并没有真正的意义。RemainderDetailViewController有 xib 吗?故事板? -
这是故事板@Larme
标签: objective-c xcode nscoding