これがコアデータモデルです。画像
DiaCD <--->> HoraCD <<---> ActividadCD
エンティティの「アクティビティ」は、アクティビティをフィルタリングするための属性と呼ばれるカテゴリです。私の質問は次のとおりです。カテゴリが「X」である活動の日々を返すには、どうすればクエリを作成できますか?
1つ試してください:
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」のみを削除すると失敗します。エラー: 「理由: 'to-many キーはここでは許可されていません'」