Objective c NSMutableArray FilterSingPredicate仅超过某个索引

Objective c NSMutableArray FilterSingPredicate仅超过某个索引,objective-c,nsmutablearray,nspredicate,Objective C,Nsmutablearray,Nspredicate,我正在尝试使用FilterSingPredicate筛选NSMutableArray元素 棘手的是,我总是想在数组中保留至少10个项,不管它们是否通过谓词测试。比如: NSPredicate * cullPredicate = [NSPredicate predicateWithFormat: @"distanceFromCurrent <= 25 OR index < 10"]; [self.myArray filterUsingPredicate:cullPre

我正在尝试使用FilterSingPredicate筛选NSMutableArray元素

棘手的是,我总是想在数组中保留至少10个项,不管它们是否通过谓词测试。比如:

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

[self.myArray filterUsingPredicate:cullPredicate];
NSPredicate*cullPredicate=[NSPredicate-predicateWithFormat:

@“distanceFromCurrentNSPredicate有一个
-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];
NSArray*array=[[self.myArray copy]autorelease];
NSPredicate*谓词=[NSPredicate谓词WithBlock:^BOOL(id evaluatedObject,NSDictionary*绑定){
if([array indexOfObject:evaluatedObject]<10)返回YES;

return evaluatedObject.distance from current它应该是
-filteredarrayingpredicate:
不是
-filterWithPredicate:
@RichardJ.RossIII他说他正在尝试筛选的是一个NSMutableArray。
-[NSMutableArray filterSingPredicate:
是正确的方法(我复制了他的错误,尽管我突然想到它看起来不正确)。无论如何,通过RichardLovejoy修正了建议编辑我的答案。是的,我在问答中都编辑了,我希望它能显示出来
__block int count = 0;
NSObject * object = myArray[0];
NSPredicate * predicate = [NSPredicate predicateWithBlock:^BOOL(QDItem * evaluatedObject, NSDictionary * bindings) {
    if (object.price == evaluatedObject.price) {
        count ++;
        return YES;
    }
    return NO;
}];
[myArray filterUsingPredicate:predicate];
NSLog(@"%d", count); // output: 1 if return YES