我需要一些关于NSFetchedResultsController
的谓词的帮助。我的猜测是可以用SUBQUERY
完成,但我无法弄清楚如何。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Album"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"ANY tracks.playlistItems.playlist == %@", section.playlist];
当使用此谓词执行获取请求时,我得到“此处不允许多对多键”错误。这是有道理的,因为专辑有多个曲目,并且曲目有多个播放列表项。
所以在这里使用自然语言是我想要的这个谓词:一个专辑,其中至少有一个音轨至少有一个播放列表具有以下播放列表。
我可以在谓词中使用SUBQUERY来实现这一点吗?
(我知道这可以通过2次获取请求轻松实现,但我想知道是否可以使用一个请求完成此操作,因为我使用的是NSFetchedResultsController
)
答案 0 :(得分:7)
是的,你可以使用SUBQUERY来做到这一点。我曾经多次使用子查询,但我认为你的应该是这样的:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(tracks, $t, ANY $t.playlistItems.playlist == %@).@count != 0", section.playlist];