UITableView - 访问对象时出现数据错误

时间:2012-12-19 13:02:42

标签: xcode core-data

我在一个项目中使用Core Data,该项目在导航栏中包含五个项目,每个项目都属于一个单独的导航控制器。每个项目都有以下结构:

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'

在阅读有关Core Data故障的文档后,这种行为一方面似乎是正常的。但另一方面,Core Data应该在我访问时自动重新获取对象?

感谢您的任何想法!

更新

每次出现视图时,我都会使用NSFetchedResultsController重新获取问题。

更新II

@class Contact;
//...
@property (strong, nonatomic) Contact *contact;

1 个答案:

答案 0 :(得分:0)

显然,matchcode属性未在您的模型或托管对象子类中正确映射(.h中的@dynamic.m声明。仔细检查此属性的名称是否正确(可能是@"matchCode"?),并且您还尝试使用正确的名称访问它。检查您的_contact变量和详细视图控制器的属性是否正确。