核心数据:如何根据相关实体的属性获取实体
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]];
在 NSFetchRequest
的 Anime
个实体上,但是会出现以下错误:
"NSInvalidArgumentException", "to-many key not allowed here"
这对我来说很有意义,我可以简单地通过使用这个来解决这个问题:
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"AnimeName"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"string == %@", searchString]];
然后从每个返回的对象中获取与 Anime
实体的关系,但是我如何将它插入到我的 UITableView
的 NSFetchedResultsController
中?
如果有人知道解决办法,请帮忙。
对于多对多关系,使用 "ANY":
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Anime"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"ANY names.string == %@", searchString]];
我的对象图的相关部分如下所示:
[Anime] <->> [AnimeName @string @type]
所以一个 Anime
对象有许多 AnimeName
个对象,这些对象包含一个字符串和它们的名称类型。现在要实现 "Search by Name" 功能,我需要一个谓词来匹配所有 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
实体的关系,但是我如何将它插入到我的 UITableView
的 NSFetchedResultsController
中?
如果有人知道解决办法,请帮忙。
对于多对多关系,使用 "ANY":
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Anime"];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"ANY names.string == %@", searchString]];