我对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/