我需要一些有关 NSFetchedResultsController
谓词的帮助。我的猜测是这可以通过 SUBQUERY
来完成,但我不知道如何做。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Album"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"ANY tracks.playlistItems.playlist == %@", section.playlist];
当使用这个谓词执行一个获取请求时,我得到一个“这里不允许多对多键”的错误。这是有道理的,因为专辑有多个轨道,而一个轨道有多个播放列表项。
所以在这里使用自然语言是我想从这个谓词中得到的:一张专辑,其中至少一首轨道至少有一个具有以下播放列表的播放列表项。
我可以在谓词中使用 SUBQUERY 来实现吗?
(我知道这可以使用 2 个获取请求轻松实现,但我想知道这是否可以使用一个请求完成,因为我使用的是 NSFetchedResultsController
)
最佳答案
是的,您可以使用 SUBQUERY 执行此操作。我只使用过几次子查询,但我认为你的子查询应该是这样的:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(tracks, $t, ANY $t.playlistItems.playlist == %@).@count != 0", section.playlist];
关于ios - "multiple to-many keys not allowed here"谓词问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533321/