我在iPhone上与Core Data有关以下方面的问题:
我在Core Data中有一对多的关系。假设实体被称为配方和类别。一个类别可以有许多食谱。
我完成了在UITableView中列出的所有配方的操作,并以该类别命名的节标题。
我要实现的是列出所有类别作为节标题,甚至那些没有配方的类别:

category1   <--- this one should be displayed too
category2
     recipe_x
     recipe_y
category3
     recipe_z




 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Recipe" inManagedObjectContext:managedObjectContext];
 [fetchRequest setEntity:entity];
 [fetchRequest setFetchBatchSize:10];

 NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"category.categoryName" ascending:YES];
 NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"recipeName" ascending:YES];
 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1,sortDescriptor2, nil];

 [fetchRequest setSortDescriptors:sortDescriptors];
 NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"category.categoryName" cacheName:@"Recipes"];


用核心数据实现这一目标的最优雅的方法是什么?

最佳答案

如果节中没有任何行,则实际上并不是要显示这些节。这就是UITableView的设计方式。如果您真的想强制执行此操作,则需要在数据源调用-numberOfRowsForSection:中添加逻辑,以使其看起来总是存在一行,然后可以使用-heightForRowAtIndexPath:尝试隐藏该行。

话虽如此,这是一个可怕的主意。让这些部分像设计的那样隐藏起来。

关于iphone - 核心数据一对多关系:在UITableView中列出所有相关对象作为节标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2337167/

10-09 16:28