我想知道是否可以使用数组索引值过滤带有NSPredicate的NSArray,即
NSArray *completeArray = ...;
NSArray *filteredArray = [completeArray filteredArrayUsingPredicate:[NSPredicate
predicateWithFormat:@"ANY (arrayIndex < 5) && (Other conditions here)"];
我正在使用核心数据,并且不能使用主键或其他标识符作为对象。
答案 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是无序的。您想要的任何订购,您必须自己申请。