gpt4 book ai didi

objective-c - NSMutableArray filterUsingPredicate 仅通过某个索引

转载 作者:太空狗 更新时间:2023-10-30 04:00:26 27 4
gpt4 key购买 nike

我试图用 filterUsingPredicate 剔除我的 NSMutableArray 元素。

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

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

[self.myArray filterUsingPredicate:cullPredicate];

“OR index < 10”表示我想做什么……我意识到它行不通。

这可以用谓词实现吗?或者我是否需要取出另一个元素从 10 开始的数组,应用过滤器,然后将其添加回原始数组?

最佳答案

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];

关于objective-c - NSMutableArray filterUsingPredicate 仅通过某个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9315476/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com