NSMutableArray filterUsingPredicate仅超过某个索引

Ric*_*joy 4 objective-c nsmutablearray nspredicate

我试图用filterUsingPredicate来剔除我的NSMutableArray元素.

棘手的部分是我总是希望在数组中保留至少10个项目,无论它们是否通过谓词测试.所以类似于:

NSPredicate * cullPredicate = [NSPredicate predicateWithFormat:
        @"distanceFromCurrent <= 25 OR index < 10"];

[self.myArray filterUsingPredicate:cullPredicate];
Run Code Online (Sandbox Code Playgroud)

'OR指数<10'表示我想做什么......我意识到它不起作用.

这可能与谓词有关吗?或者我是否需要拉出另一个数组,其元素从10开始,应用过滤器,然后将其添加回原始数组?

And*_*sen 7

NSPredicate有一个-predicateWithBlock:方法可以用来执行此操作.像这样的东西:

NSArray *array = [[self.myArray copy] autorelease];
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {        
    if ([array indexOfObject:evaluatedObject] < 10) return YES;
    return evaluatedObject.distanceFromCurrent <= 25;
}];
[self.myArray filterUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)