我在 iPhone 上的 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 - 核心数据一对多关系: List all related objects as section header in UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337167/