2010-12-06 81 views
1

我有一个我想用谓词过滤的对象数组,但是我一直无法弄清楚语法(或者它是不可能的)。使用谓词过滤数组中的对象的属性

假设对象是位置,它有纬度经度的性能。我已经得到了这些所谓的allLocations的数组,我想产生的位置的新数组,其中纬度属性大于30

当获取的管理对象,你可以简单地使用属性名称,但并非如此与阵列:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"latitude > 30.0"]; 

返回没有匹配(尽管有大量的被位置与纬度> 30.0对象

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.latitude > 30.0"]; 

没有好的任一,而

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"[SELF latitude] > 30.0"]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"[location latitude] > 30.0"]; 

抛出异常。

我运气不好吗?

回答

2

你在找什么是NSArray的filteredArrayUsingPredicate:方法。上面的第一个谓词尝试将在您将其传递给该方法时正常工作。

值得注意的是,NSMutableArray使用不同的方法来实现类似的效果filterUsingPredicate:。 MutableArray版本改变接收器,而Array版本返回一个新的数组。

参考:
NSArray Class Reference
NSMutableArray Class Reference

+0

filteredArrayUsingPredicate肯定是我使用的是什么,但我得到的第一个谓词空数组,因此我的问题。我会再次使用它来确保我不会错过任何东西,但空数组就是我发布这个问题的原因。 – 2010-12-06 17:59:33

相关问题