基本上,我要做的是:
NSArray *objectsAtIndex1 = @[[@[@"Foo", @"Bar"] objectAtIndex:1]];
但改用NSPredicate
,所以看起来像这样(但是这不起作用):
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF[1] != null"]
NSArray *objectsAtIndex1 = [@[@"Foo", @"Bar"] filteredArrayUsingPredicate:predicate]
当然, @“ Foo” 和 @“ Bar” 实际上是未知值(甚至可以是字典或数字)。有可能实现这一目标吗?
答案 0 :(得分:0)
我通过在predicateWithBlock:
上使用NSPredicate
方法来解决此问题:
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数组中的对象必须唯一才能正常工作,这并不完美。