我在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/