核心数据:如何根据相关实体的属性获取实体

时间:2015-03-14 16:10:58

标签: ios core-data nspredicate nsfetchedresultscontroller nsfetchrequest

这是我的对象图的相关部分:

[Anime] <->> [AnimeName @string @type]

因此Anime对象有许多AnimeName个对象,这些对象包含一个字符串以及它们的名称类型。现在实现&#34;按名称搜索&#34;功能,我需要一个匹配所有Anime实体的谓词,其中任何名称都包含搜索字符串。到目前为止我所尝试的是:

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Anime"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"names.string == %@", searchString]];

NSFetchRequestAnime个实体上,但会出现以下错误:

"NSInvalidArgumentException", "to-many key not allowed here"

这对我来说非常有意义,我可以通过使用它来解决这个问题:

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"AnimeName"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"string == %@", searchString]];

然后从每个返回的对象获取与Anime实体的关系,但是如何将其插入我的NSFetchedResultsController的{​​{1}}?

如果有人知道解决方案,请提供帮助。

1 个答案:

答案 0 :(得分:3)

对于多对多关系,请使用“ANY”:

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Anime"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"ANY names.string == %@", searchString]];