NSPredicates 和双对 n 关系
Posted
技术标签:
【中文标题】NSPredicates 和双对 n 关系【英文标题】:NSPredicates and double to-n relationships 【发布时间】:2009-08-13 20:21:04 【问题描述】:我有一个名为 Album 的核心数据实体;专辑与歌曲实体(称为歌曲)有关系,每首歌曲都有任意数量的标签实体(在标签属性中),标签有一个名称。 现在我想检查专辑中的歌曲是否包含标签;使用单个 NSPredicate。
想到的一个想法是:
[NSPredicate predicateWithFormat: @"ANY (ANY songs).tags LIKE %@", someTagName];
但这会在运行时导致错误(“无法解析格式字符串”)。我尝试了各种变体,但都没有成功。
有没有办法做到这一点?
【问题讨论】:
【参考方案1】:我想你想要
[NSPredicate predicateWithFormat:@"ANY songs.@unionOfSets.tags LIKE %@", someTagName]
查看set and array operators 上的键值编程指南部分。
【讨论】:
听起来不错,我试过了,但又卡住了。这通常不会经常发生在我身上......现在我得到以下异常:***由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[只是一个想法,但也许 LIKE 在 iPhone 上不可用?我知道我在 BETWEEN 上遇到了困难,这似乎不起作用。
所以标签与歌曲没有多对多的关系?如果以这种方式建模,获取标签的歌曲将只涉及访问属性 tag.songs。您对其建模的方式似乎可以为每首歌曲复制标签(这在您的应用中可能很好)。
【讨论】:
以上是关于NSPredicates 和双对 n 关系的主要内容,如果未能解决你的问题,请参考以下文章
在 NSFetchRequest 上设置 2 个 NSPredicates