我对NSPredicate还是很陌生,如果这是新手问题,很抱歉,但是我已经完成研究,找不到答案。

我想按功能而不是属性过滤自定义对象的数组。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ LIKE %@", [times objectAtIndex:x] ,[unit realTime]];
NSArray *filtered  = [objectArray filteredArrayUsingPredicate:predicate];
objectArray仅包含unit对象。我想通过[unit realTime]方法结果按Array中的每个对象过滤数组。基本上我想过滤掉[times objectAtIndex:x] == [unit realTime]数组。这可能吗?

最佳答案

您可以在Unit.h文件中将realTime添加为@property() NSDate *realTime;,然后像完成操作一样实现realTime方法。这样realTime是类中的一个参数,您将使用自定义实现覆盖getter方法。在这种情况下,不应显示undeclared identifier错误。

完成此操作后,将谓词语句更改为

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K LIKE %@", unit.realTime, [times objectAtIndex:x]];
NSArray *filtered  = [objectArray filteredArrayUsingPredicate:predicate];

您应该将%K用于unit.realTime而不是%@

关于ios - 通过函数谓词过滤对象数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14395071/

10-12 15:57