Собственная функция (раунд для NSString) в NSPredicate - PullRequest
0 голосов
/ 26 сентября 2011

У меня проблема с NSPredicate.

Я получил предикат:

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

и определил расширение для NSString:

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

Когда я вызываю вручную:

NSLog(@"%f",[s round:3])

, где s - это NSString, он отлично работает, но используется в NSPredicate подъем: NSInvalidArgumentException: rease - [NSCFString round]: нераспознанный селектор, отправленный экземпляру.

Я использую решение, используемое на странице:http://funwithobjc.tumblr.com/post/2922267976/using-custom-functions-with-nsexpression

Основной вопрос - сделать функцию округления в NSPredicate, поэтому приветствуются любые другие решения

1 Ответ

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

Двоеточие (:) должно быть частью селектора в FUNCTION, поэтому оно должно быть FUNCTION('12.12345', 'round:', 3)

Кроме того, я считаю, что метод round: должен возвращать NSNumber *, не примитивный тип.

...