私はこれに似たコアデータモデルを持っています:
- 会社エンティティ
- companyName属性(文字列)
- To-従業員エンティティとの多くの関係。
- 従業員エンティティ
- employeeID属性(文字列)
- To-親会社エンティティとの1つの関係
会社をテーブルビューで一覧表示するルートビューコントローラーがあります。次に、行を選択すると、選択した会社のインデックスが、テーブルに従業員をリストする別のビューコントローラーにプッシュされます。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)ip
{
EmployeeListViewController *anotherViewController = [[EmployeeListViewController alloc] init];
[anotherViewController setCompany:[companyList objectAtIndex:[ip row]]];
[[self navigationController] pushViewController:anotherViewController animated:YES];
[anotherViewController release];
}
従業員ビューコントローラでは、会社はNSManagedObjectに設定されています。
- (void)setCompany:(NSManagedObject *)co
{
[co retain];
[company release];
company = co;
[self setTitle:[company valueForKey:@"companyName"]];
}
新しい従業員を追加するための私のコードは次のようになります。
employee = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:moc];
[[company mutableSetValueForKey:@"employee"] addObject:employee];
[employee setValue:employeeID forKey:@"employeeID"];
これはデータベースを正しく挿入しているように見え、会社の外部キーIDがEmployeeテーブルに挿入されていることがわかります。
会社のすべての従業員を取得しようとしていますが、行き詰まっています。
これが私がNSFetchRequestに対して持っているものですが、それは私にすべての従業員(会社ではない)を与えるだけです:
NSManagedObjectContext *moc = [self managedObjectContext];
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
[fetch setEntity:[NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc]];
[fetch setEntity:entity];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:fetch error:&error];
[fetch release];