1

ナビゲーション バーに 5 つの項目があり、それぞれが別のナビゲーション コントローラーに属しているプロジェクトで 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 で再フェッチすると、問題は発生しません。

アップデートⅡ

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

1 に答える 1

0

明らかに、属性はモデルまたは管理対象オブジェクトのサブクラス (および の宣言のmatchcode両方) で適切にマップされていません。この属性の名前が正しいこと (おそらく?) と、正しい名前でアクセスしようとしていることを再確認してください。詳細ビュー コントローラの変数と属性が正しい型であることを確認してください。.h@dynamic.m@"matchCode"_contact

于 2012-12-20T11:52:48.123 に答える