基本上,我想做的是:
NSArray *objectsAtIndex1 = @[[@[@"Foo", @"Bar"] objectAtIndex:1]];
但是使用NSPredicate
,所以它看起来像这样(但这不起作用(:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF[1] != null"]
NSArray *objectsAtIndex1 = [@[@"Foo", @"Bar"] filteredArrayUsingPredicate:predicate]
当然,@"Foo">和@Bar">实际上是未知值(甚至可能是字典或数字(。有可能做到这一点吗?
我在NSPredicate
上使用predicateWithBlock:
方法解决了这个问题,如下所示:
NSArray *fooBarArray = @[@"Foo", @"Bar"];
NSUInteger index = 1;
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
return [fooBarArray indexOfObject:evaluatedObject] == index;
}];
NSArray *objectsAtIndex1 = [fooBarArray filteredArrayUsingPredicate:predicate];
然而,有一点需要注意,fooBar数组中的对象需要是唯一的才能工作,这并不完美。