2 つのエンティティがあるとしましょう -- Athlete: with "fullname" 属性 -- Eval: with "pullups" 属性 -- 名前ごとに複数の eval を設定したいのですが、希望する名前をどのように伝えるか特定の評価を追加するには?
私のアプリは、iOS にプリインストールされている連絡先アプリとよく似ています。ルート ビュー コントローラーには、最初のエンティティである Athlete があります。すべてのアスリートを表示するテーブル ビューです。アスリートを選択すると、彼/彼女のすべての情報が表示され、show eval というボタンがあります。Eval は私の 2 番目のエンティティです。Athlete は Eval と対多の関係にあります。つまり、1 人のアスリートは複数の eval を持つことができますが、eval は 1 つのアスリートしか持つことができません。評価を追加する方法は知っていますが、それらを追加すると、所有者がいないため、選択したアスリートに関係なく、すべての評価が表示されます。選択されたアスリートに関連する評価を作成するにはどうすればよいですか?
allevals.h
//the athlete selected pushes a tableviewcontroller with all evals, but I want it to only show evals for the athlete selected.
-(void)viewWillAppear:(BOOL)animated{
self.title = [NSString stringWithFormat:@"%@'s Evaluations",_athletesFullName];
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
_managedObjectContext = [appDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *eval = [NSEntityDescription entityForName:@"Eval" inManagedObjectContext:_managedObjectContext];
[request setEntity:eval];
NSSortDescriptor *sortDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"date_recorded"
ascending:NO
selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[_managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil){
//handle error
}
[self setEvalArray:mutableFetchResults];
[self.tableView reloadData];
}
ビュー コントローラは次のとおりです。すべてのアスリート テーブルビューがルート テーブルビュー コントローラーであり、アスリートを追加できる add barbuttonitem があります。ビューをリロードし、テーブルビューに新しく追加されたアスリートを表示します。彼をクリックすると、詳細が表示され、評価を見るためのボタンが表示されます。そこから、追加用の barbuttonitem を含む評価の別のテーブルビューです。問題は、追加されたばかりの eval にその所有者が誰であるかを伝える方法がわからないことです。