您可以使用数组索引值作为谓词中的参数来过滤数组

时间:2011-05-30 07:28:31

标签: iphone ios nsarray nspredicate

我想知道是否可以使用数组索引值过滤带有NSPredicate的NSArray,即

NSArray *completeArray = ...;
NSArray *filteredArray = [completeArray filteredArrayUsingPredicate:[NSPredicate 
   predicateWithFormat:@"ANY (arrayIndex < 5) && (Other conditions here)"];    

我正在使用核心数据,并且不能使用主键或其他标识符作为对象。

2 个答案:

答案 0 :(得分:2)

使用subarrayWithRange:然后过滤子阵列

NSArray *subarray = [completeArray subarrayWithRange:NSMakeRange(0, 5)];
NSArray *filteredArray = [subarray filteredArrayUsingPredicate:[NSPredicate 
   predicateWithFormat:@"ANY (Other conditions here)"]

答案 1 :(得分:0)

不,不是真的。使用SUBQUERY你可能会得到一些非常虚伪的东西,但是即使我知道用谓词做非传统事物的人,也认为这是一个坏主意。

你说你正在使用CoreData这样做。如果是这种情况,那么您的请求没有意义,因为CoreData对订购事物没有任何作用。是的,您可以为获取请求指定排序描述符,但直到使用谓词后才会应用这些描述符。由谓词处理的任何数据本质上都是无序的。因此,要求在CoreData的谓词中使用“数组索引值”不仅会滥用谓词系统,而且会代表对CoreData框架的固有误解。

CoreData是无序的。您想要的任何订购,您必须自己申请。