NS-предикат с круглой функцией - PullRequest
1 голос
/ 26 сентября 2011

Мне нужно использовать 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 ]

2 голосов
/ 26 сентября 2011

Вы можете использовать свою собственную определенную функцию в классе расширений. IE:

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

и вам нужно определить этот метод в вашей категории для т.е. NSString

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

посмотрите на страницу: http://funwithobjc.tumblr.com/post/2922267976/using-custom-functions-with-nsexpression

1 голос
/ 26 сентября 2011

Вы не можете генерировать произвольные функции предикатов.В этом случае, однако, ответ тривиален:

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