NSpredicate具有圆形功能

时间:2011-09-26 14:14:03

标签: iphone nspredicate rounding

我需要使用带有圆函数的NSPredicate。 例如:

Child* child1 = [self myFirstChild];
NSPredicate *predicate = [NSPredicate predicateWithString:@"round(SELF.age) > 12"];
BOOL twelveOrAlmostTwelve = [predicate evaluateWithObject:child1];

文档中没有这样的功能: http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Predicates.pdf

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:2)

您可以在扩展类中使用自己定义的函数。 IE:

[NSPredicate predicateWithFormat:@"FUNCTION('12.12345','round:',3) = 12.123"]

您需要在类别中定义此方法,即ie。的NSString:

-(NSNumber*) round:(NSString*) precision;

看一下页面: http://funwithobjc.tumblr.com/post/2922267976/using-custom-functions-with-nsexpression

答案 1 :(得分:1)

您无法生成任意谓词函数。然而,在这种情况下,答案是微不足道的:

NSPredicate *predicate = [NSPredicate predicateWithString:@"SELF.age >= 11.5"];