如何将NSPredicate用于Key-Path值

时间:2010-05-13 20:10:56

标签: iphone cocoa nspredicate objective-c

使用filterArrayUsingPredicate对数组使用NSPredicate非常简单:。

如何为键路径值完成此操作?意思是,我有一个对象数组(在这种情况下,对象属于同一类型)。每个对象都有一个名为name的实例变量。根据文档,它说要执行以下操作:

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

那是否也被用于filteredArrayUsingPredicate?如果我有一组People对象怎么办?这是否意味着我会使用:

NSArray *allPeopleObjects; // pre-populated
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY people.name like 'Foo'"];
NSArray *matching = [allPeopleObjects filteredArrayUsingPredicate:predicate];

该部门的文档有点缺乏。

是否也可以针对单个Person对象使用谓词?像Person.name这样的东西包含[cd]'Foo'?怎么做?

1 个答案:

答案 0 :(得分:0)

是的,你的两个例子都能很好地运作。 NSPredicate可以遵循键值路径。如果您有一个Person个对象,为什么不使用valueForKeyPath:并在代码中进行比较而不是使用NSPredicate?在这种情况下似乎有点过分了。