这是核心数据模型。图片
DiaCD <--->> HoraCD <<---> ActividadCD
在实体“活动”中是一个称为属性的类别,用于过滤活动。我的问题是:我如何进行查询以返回类别为“X”的活动的日子?
试一试:
NSEntityDescription *entityDescriptionDia = [NSEntityDescription entityForName:@"DiaCD" inManagedObjectContext:managedObjectContext];
NSFetchRequest *requestDia = [[NSFetchRequest alloc] init];
NSPredicate *predicateDia = [NSPredicate predicateWithFormat:@"ANY relDiaHora.relHoraActividad.categoria == %@", categoria];
[requestDia setEntity:entityDescriptionDia];
[requestDia setPredicate:predicateDia];
NSError *errorDia;
NSArray *arrayDia = [managedObjectContext executeFetchRequest:requestDia error:&errorDia];
if ([arrayDia count] > 0) {
for (DiaCD *dia in arrayDia) {
NSSet *setHora = dia.relDiaHora;
HoraCD *horaQuery = [setHora anyObject];
ActividadCD *actividadQuery = horaQuery.relHoraActividad;
NSLog(@"Act --> %@ y la categoria --> %@ y la categoria --> %@", actividadQuery.titulo, actividadQuery.categoria, categoria);
}
}
如果我做这个查询不会返回不尊重类别的好数据,我猜,不知道为什么:S。
尝试2:
NSPredicate *predicateDia = [NSPredicate predicateWithFormat:@"relDiaHora.relHoraActividad.categoria == %@", categoria];
如果我执行相同的查询但仅删除“ANY”会失败。错误:“原因:'此处不允许使用多对多键'”