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

Core Data: How to fetch Entities based on an attribute of a related entity

我的对象图的相关部分如下所示:

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

所以一个 Anime 对象有许多 AnimeName 个对象,这些对象包含一个字符串和它们的名称类型。现在要实现 "Search by Name" 功能,我需要一个谓词来匹配所有 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 实体的关系,但是我如何将它插入到我的 UITableViewNSFetchedResultsController 中?

如果有人知道解决办法,请帮忙。

对于多对多关系,使用 "ANY":

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