【发布时间】:2011-02-25 17:07:12
【问题描述】:
对于这样的关系:
标签组>标签>对象
一个Object有标签,标签可以通过tagGroups进行分组。
我有一个对象,我想知道它的标签所属的所有 TagGroups。
为了构造他的谓词,我首先尝试了以下格式字符串:
(SELF 是一个 TagGroup)
NSPredicate* p = [NSPredicate predicateWithFormat:@"%@ IN SELF.tags.objects" , object];
这失败了,因为集合没有通过 Key-ValueCoding 遍历。
经过一些研究,我发现了几个解释 SUBQUERY 的问题
Core data to-many NSPredicate with AND
这些似乎是解决方案的一部分,但与这些问题不同,我不是在测试像“tag.name”这样的值,而是在集合中的成员身份。
考虑到这一点,我尝试了这个:
NSPredicate* p = [NSPredicate predicateWithFormat:@"%@ IN SUBQUERY(SELF.tags, $eachTag,$eachTag.object)" , object];
无法解析(我也尝试了其他一些变体,但均未成功)
关于如何正确构造此格式字符串的任何想法?
更新:
也从另一个方向尝试过:
NSPredicate* p = [NSPredicate predicateWithFormat:@"ALL SUBQUERY(%@.tags,$eachTag,$eachTag.tagGroup)" , anObject];
【问题讨论】:
-
如果 CoreData 可以将
SUBQUERY表达式转换为 SQL 语句,我会感到非常惊讶。不过,我可能是错的。 -
直到我开始挖掘有关使用 NSFR 获取多对多关系的信息时,我才意识到这一点。
标签: iphone cocoa core-data nspredicate