ios - "multiple to-many keys not allowed here"谓词问题

标签 ios sql core-data nspredicate nsfetchedresultscontroller

我需要一些有关 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/

相关文章:

ios - 如何让核心动画显式动画的行为方式与隐式动画完全相同?

ios - Swift 标签中的换行符和行数(以编程方式)

sql - 多语句表值函数与内联表值函数

sql - 如何通过特定顺序检测值的变化

ios - Swift 3 核心数据 NSExpression 始终返回 0

ios - 写入文本文件(附加)时,我写入的最后一个值将替换所有以前的值

javascript - Nativescript 从原生图像中获取 base64 数据

sql - 条件 NOT NULL case SQL

iphone - Coredata 更新后一致更新 UITableview

ios - 将核心数据数据库从一个应用程序迁移到另一个应用程序