嘿,我有与CoreData有关的问题。我的iphone项目有2个实体,组织和品牌,有1到多个“BrandsToOrg”关系和反向。
所以我的项目有一个Mapview,当你点击那些Organisations时,你可以看到所有的组织和一个小的子视图。在子视图中有一个“show Brands”按钮,它应该初始化一个新的TableView,它只显示品牌属于被选中的组织。 我有什么想法可以编码吗?
THX
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(TitleMedium == %@)",@"Rock Antenne"];????
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.entityName inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
if(predicate != nil)
{
[request setPredicate:predicate];
}
// If a sort key was passed, use it for sorting.
NSString *sortKey=@"TitleMedium";
BOOL sortAscending=YES;
if(sortKey != nil)
{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:sortAscending];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
}
NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
[request release];
[self setEntityArray:mutableFetchResults];
答案 0 :(得分:0)
以下是一个如何使用orgs的顶级UITableView和品牌的详细表格视图来执行此操作的示例。在顶层,您对组织执行获取请求并显示它们。选择特定的一个时,您可以创建品牌的详细视图。 BrandsViewController对象有一个“org”属性,告诉显示什么;然后,它可以参考“org.brands”(这是核心数据的一对多关系)来定位该显示的所有品牌。请注意,您无需在BrandsViewController中进行明确的Core Data提取即可获得品牌。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
BrandsViewController *targetViewController = [[BrandsViewController alloc]
initWithNibName:@"BrandsView" bundle:nil];
// pass managedObjectContext along to new view controller
targetViewController.managedObjectContext = self.managedObjectContext;
// Pass the selected org to the new view controller
targetViewController.org = (Organisation *)[fetchedResultsController objectAtIndexPath:indexPath];
[[self navigationController] pushViewController:targetViewController animated:YES];
[targetViewController release];
}