我有2个具有一对多关系的实体(Category和SubCategory)。我想在tableView中显示类别,每个类别代表tableView中的一个部分(类别名称将是标题视图的标题,其所有关联的子类别将是行)。我必须用'isActive == NO'排除子类别。 为实现这一点,我在Category实体上创建了NSFetchRequest,如下所示。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Category" inManagedObjectContext:moc];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY subCategories.isActive == YES"];
[fetchRequest setPredicate:predicate];
[fetchRequest setEntity:entity];
但是这个获取请求给出了倍数(重复)类别。即如果“isActive == YES”的子分类总数为25,那么我在fetchedResult中得到25个分类。
我也试过“SUBQUERY”,并且我没有得到重复的类别,但我得到所有的SubCategories而不管“isActive == YES”。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Category" inManagedObjectContext:moc];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(subCategories, $x, ($x. isActive == 1)).@count != 0)"];
[fetchRequest setPredicate:predicate];
[fetchRequest setEntity:entity];
任何人都可以帮我解决这个问题。