我正在一个项目中使用核心数据,该项目包含五个项目中的五个项目,每个项目属于单独的导航控制器。每个项目都有以下结构:
Item1NavController » Item1RootTableView > Item1RootDetailView
使用了一段时间后(例如更改导航栏中的项目,加载详细信息等),我遇到了问题,RoottableView将选定的对象返回作为故障并导致详细信息视图崩溃。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Getting object in table view and load detail view
_contact = [[self fetchedResultsController] objectAtIndexPath:indexPath];
ContactDetailVC *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactDetailVC"];
vc.contact = _contact;
[self.navigationController pushViewController:contactDetailVC animated:YES];
}
日志显示以下消息:
Selected contact: <Contact: 0x1f5e9d10> (entity: Contact; id: 0x1f5b38d0 <x-coredata://0F273F3F-708F-417F-915B-AE9EBB3133C0/Contact/p3828> ; data: <fault>)
// Error message
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSObjectID_64_1 matchcode]: unrecognized selector sent to instance 0x213b4e20'
阅读有关核心数据故障的文档后,这种行为似乎一方面是正常的。但另一方面,核心数据在访问对象时应该自动撤离该对象?
感谢您的想法!
update
当我每次视图出现问题时都不会出现nsfetchedresultscontroller时。
更新II
@class Contact;
//...
@property (strong, nonatomic) Contact *contact;
很明显, matchcode
属性未正确映射在您的模型或托管对象子类中(.h
和@dynamic
在.m
中的声明)。仔细检查此属性的名称是否正确(也许是@"matchCode"
?),并且您还试图使用正确的名称访问它。检查您的_contact
变量和详细信息视图控制器的属性是否为正确的类型。