这是我的对象图的相关部分:
[Anime] <->> [AnimeName @string @type]
因此Anime
对象有许多AnimeName
个对象,这些对象包含一个字符串以及它们的名称类型。现在实现&#34;按名称搜索&#34;功能,我需要一个匹配所有Anime
实体的谓词,其中任何名称都包含搜索字符串。到目前为止我所尝试的是:
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Anime"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"names.string == %@", searchString]];
在NSFetchRequest
个Anime
个实体上,但会出现以下错误:
"NSInvalidArgumentException", "to-many key not allowed here"
这对我来说非常有意义,我可以通过使用它来解决这个问题:
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"AnimeName"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"string == %@", searchString]];
然后从每个返回的对象获取与Anime
实体的关系,但是如何将其插入我的NSFetchedResultsController
的{{1}}?
如果有人知道解决方案,请提供帮助。
答案 0 :(得分:3)
对于多对多关系,请使用“ANY”:
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Anime"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"ANY names.string == %@", searchString]];