3

使用filteredArrayUsingPredicate: 对数组使用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'?那怎么做?

4

1 回答 1

0

是的,您的两个示例都可以完美运行。NSPredicate可以遵循键值路径。如果您有一个Person对象,为什么不直接使用valueForKeyPath:并在代码中进行比较而不是使用NSPredicate? 在这种情况下,这似乎有点矫枉过正。

于 2010-05-13T20:46:52.930 回答