Неинтуитивное поведение NSPredicate - PullRequest
0 голосов
/ 19 июня 2011
NSPredicate * thePredicate1= [NSPredicate predicateWithFormat: @"Title CONTAINS[cd] %@", searchTerm];

Если searchterm - пустая строка, поиск с использованием thePredicate1 должен вернуть все в порядке?

Неправильно.

Если это ноль, он возвратит ошибку.

Моя проблема в том, что я должен создать особый случай. Поэтому, если заголовок пустой (или ноль), мне придется создать предикат, который всегда возвращает истину. Потому что СОДЕРЖИТ "" всегда возвращать ложь.

Я думаю, что Contains @ "" всегда должно возвращать true. Каждая строка содержит пустую строку

Что они думают, когда у них есть эта проблема?

Ответы [ 2 ]

3 голосов
/ 19 июня 2011
NSLog(@"%@", [NSPredicate predicateWithFormat:@"Title CONTAINS[cd] %@", @""]);
NSLog(@"%@", [NSPredicate predicateWithFormat:@"Title CONTAINS[cd] %@", nil]);

Журналы:

2011-06-18 17:53:44.037 EmptyFoundation[11247:903] Title CONTAINS[cd] ""
2011-06-18 17:53:44.040 EmptyFoundation[11247:903] Title CONTAINS[cd] nil

В чем проблема? searchTerm не объект?

1 голос
/ 19 июня 2011

Обратите внимание, что документация для аналогичного метода, +[NSString stringWithFormat:], содержит следующее предупреждение:

Важно: Вызывает исключение NSInvalidArgumentException, если формат равен nil.

...