我正在使用Core Data
来获取实体。我只需要获取关系attribute
的实体,其ID为41
并且attribute
需要将isOn
属性设置为YES。
以下是我的尝试:
[NSPredicate predicateWithFormat:@"(SELF IN %@ AND ANY attributes.attributeID.intValue == 41) AND (SELF IN %@ AND ALL attributes.isOn == %@)", self.places, self.places, @YES];
出于某种原因,这会使我的应用程序崩溃,而不是解释。
关于我的谓词格式是否错误的任何想法?
修改
进行更多研究似乎我需要使用SUBQUERY
,但在这种情况下不太确定。这是我尝试过但它也崩溃了“无法解析格式”错误:
[NSPredicate predicateWithFormat:@"SUBQUERY(SELF IN %@, $e, $e.attributes.attributeID.intValue == %i && $e.attributes.isOn == %@).@count > 0)", self.places, 41, @YES]
答案 0 :(得分:0)
处理子查询之外的SELF IN
,因为它与被评估/获取的实体有关,而不是相关实体,并且您的SUBQUERY格式也有点不对:
[NSPredicate predicateWithFormat:@"SELF IN %@ AND (SUBQUERY(attributes, $e, $e.attributeID.intValue == %i && $e.isOn == %@).@count > 0)", self.places, 41, @YES]
此外,我希望您的关系名称attributes
仅用于此问题的演示目的。如果没有,我建议改变它。拥有一个名为attributes
的关系真的令人困惑:它们是相互排斥的概念。