谓词为儿童对象iphone

时间:2011-05-05 08:15:14

标签: iphone nspredicate one-to-many

我在谓词编程指南中看到了这一点:

如果使用to-many关系,则谓词的构造会略有不同。如果您想获取其中至少有一名员工的名字为“Matthew”的部门,您可以使用ANY运算符,如以下示例所示:

NSPredicate *predicate = [NSPredicate predicateWithFormat:
    @"ANY employees.firstName like 'Matthew'"];

通过上述结构,如果至少有一名员工的名字为“Matthew”,则会向部门返回与之关联的所有员工对象。

我想将其修改为仅提取名为“Matthew”的员工。 因此,如果部门只有2名员工匹配此名字,则只返回2个员工对象。

我怎样才能做到这一点? 感谢。

1 个答案:

答案 0 :(得分:1)

您再次执行一组Department个对象,因此您只能返回Department个对象。如果您想要Employee个对象,则必须执行以下操作:

Department *aDepartment = ...;
NSArray *employees = [aDepartment employees];
NSPredicate *filter = [NSPredicate predicateWithFormat:@"firstName = 'Matthew'"];
NSArray *matthews = [employees filteredArrayUsingPredicate:filter];

此外,由于您的LIKE过滤器中没有任何?*符号,因此它等同于“isEqual:”比较。