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开始,应用过滤器,然后将其添加回原始数组?
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)
| 归档时间: |
|
| 查看次数: |
3063 次 |
| 最近记录: |