NSPredicate检索所有有特定孩子的父母? (IOS)

时间:2011-10-24 01:04:32

标签: iphone xcode core-data nspredicate

说我在IOS中有以下核心数据结构:

Parent1
    Child1.1: Text='A', Number=1
    Child1.2: Text='B', Number=1
Parent2
    Child2.1: Text='B', Number=1
    Child2.2: Text='A', Number=2
Parent3
    Child3.1: Text='B', Number=2
    Child3.2: Text='A', Number=1

我想要检查所有有孩子但Text ='A'且Number = 1的父母(上例中的Parent1和Parent3)。

基本上我需要的是Parent实体的谓词,如下所示:

ANY (child.Text = 'A' AND child.Number = 1)

但这不起作用 - 似乎我不能在任何关键字后面加括号。

以下情况也不好(即使它有效):

ANY child.Text = 'A' AND ANY child.Number = 1

因为它也返回Parent2。

有没有办法在谓词中执行此操作,或者我是否必须以编程方式执行此操作(例如,仅使用ANY关键字检索子项并从后面关系构造父项数组)?

1 个答案:

答案 0 :(得分:0)

在谓词中你必须使用==表示相等 - 那么它是否有效?

您还可以查看NSCompoundPredicate,以将谓词部分与AND和OR组合,例如


NSMutableArray* predicatesToCombine = [[NSMutableArray alloc]init];

[predicatesToCombine addObject:@"child.Text == 'A'"];
[predicatesToCombine addObject:@"child.Number == 1"];

NSPredicate* predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicatesToCombine];

...

[predicatesToCombine release];