Как использовать NSExpression с NSPredicate

Я обыскал весь Интернет, но не смог найти хорошего объяснения того, как использовать NSExpression в NSPredicate. Я знаю, что есть встроенная функция abs, которая мне нужна для моего предиката. У меня есть этот предикат:

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"hg-%f<0.000001",[txtInput.text floatValue]];

Мне нужно абсолютное значение части hg-[txtInput.text floatValue]. Как мне этого добиться?


person Mikayil Abdullayev    schedule 26.02.2012    source источник


Ответы (1)


Добавьте abs( ) вокруг выражения, абсолютное значение которого вы хотите получить внутри строки предиката.

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"abs(hg-%f)<0.000001",[txtInput.text floatValue]];
person David Rönnqvist    schedule 26.02.2012
comment
Спасибо, Дэвид. Я был очень удивлен, когда увидел, что это работает, поскольку abs не является одной из встроенных функций NSPredicate. Это скорее функция в NSExpression. Из этого я делаю вывод, что мы можем использовать любые выражения NSExpression в части формата строки NSPredicate. - person Mikayil Abdullayev; 27.02.2012
comment
Если вы посмотрите на определение BNF для предикатов Cocoa (developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/) вы увидите, что можете использовать набор функций внутри строки предиката (сумма, количество, минимум, максимум, среднее, медиана, режим, стандартное отклонение, сортировка, журнал, ln, exp, пол, потолок, abs, trunc, random, randomn, now) - person David Rönnqvist; 27.02.2012