这是我的模型:
http://www.girardet.ch/model.png
我的目标是按照以下条件检索所有引语:
- 属于特定主题:Themes的name_en属性
- 按相关性排序
- 通过作者过滤(使用Authors的alias属性)
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"ThemeEntries" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"relevancy" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// predictate - filter
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"theme.name_en=%@ AND quotes.author.alias=%@",@"mytheme", @"myauthor"];
[fetchRequest setPredicate:predicate];
我设置谓词时出现了“此处不允许使用to-many键”错误。
如果我改用以下谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"theme.name_en=%@, @"mytheme"];
它的功能很好,我可以循环遍历得到的ThemeEntries
并获取所有的引用。但是它没有按作者进行过滤。
我该怎么做才能按作者过滤呢?
ThemeEntities
实例相关联的那些“Quote”实例。事实上,由于谓词的评估方式,它只会检查通过第一个测试的ThemeEntities
的“Quote”实例。 - TechZen