2011-07-31 63 views
3

我不明白我的预测有什么问题。我有一个数据库方案:核心数据中的子查询

DataItem(color_ids) <->> (dataItem)Color 

如果颜色包含colorID(INT)。

我试图让

all DataItems that contain colorID == 5. 

我用下一个断言:

SUBQUERY(color_ids, $sub, $sub.colorID==5)[email protected] > 0 

感谢您的帮助。

+5

你显然试图利用核心数据,如SQL。不要这样做。核心数据不是SQL。实体不是表格。对象不是行。属性不是列。关系不是连接。核心数据是一个对象图管理系统,它可能会或可能不会持久化对象图,并且可能会或可能不会在后台使用SQL来做到这一点。试图用SQL语言来思考核心数据会导致你完全误解核心数据,并导致很多悲伤和浪费时间。 – TechZen

回答

7

您不需要SUBQUERY。其实你几乎没有需要SUBQUERY;它是极其很少发现一种情况,它是正确的使用。

你可以这样做,而不是:

[NSPredicate predicateWithFormat:@"ANY color_ids.colorID == 5"]; 
+0

这很好。你会如何更深入一层?假设我们有A <-->> B <-->> C.我们有多个A实体,C实体有一个称为标签的属性。我如何找到包含C标签== @“1234”的C实体的所有实体? – zumzum

+3

@zumzum为此你可能需要一个'SUBQUERY',它会是这样的:'SUBQUERY(aToBs,$ b,ANY $ b.bToCs.label ='1234')。@ count> 0' –

+0

谢谢。我会努力解决这个问题,一旦完成,我会尽快告诉你。 SUBQUERIES可以在iOS上使用吗? – zumzum