1

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

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

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

objectArray仅包含对象unit。我想按[unit realTime]方法结果按数组中的每个对象过滤数组。基本上我想要过滤数组 where [times objectAtIndex:x] == [unit realTime]。这可能吗?

4

1 回答 1

1

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

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

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

您应该使用%Ktounit.realTime和 not %@

于 2013-01-18T09:15:10.490 回答