Objective-C: NSPredicate LIKE не любит пробелы. Есть ли escape-последовательность для замены заготовок? - PullRequest
1 голос
/ 04 февраля 2010

У меня есть NSP-предикат, который выглядит следующим образом:

NSPredicate *likePredicate3= [NSPredicate predicateWithFormat:@"synonyms LIKE[cd] %@",[NSString stringWithFormat:@"%@", searchText]];

Я применяю его к NSArray объектов класса, который имеет свойство 'synonyms'.

Работает нормально, когда searchText представляет собой целое слово, например, «Спасибо». Однако, если я попытаюсь использовать строки с пробелом в них, например, «Спасибо», произойдет сбой, и поиск предиката не найдет совпадение в массиве.

Есть ли способ попросить NSPredicate работать со словами, в которых есть пробелы?

спасибо.

1 Ответ

2 голосов
/ 04 февраля 2010

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

NSString *search = @"a b";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF LIKE[cd] %@", 
                          [NSString stringWithFormat:@"%@", search]];
NSArray *array = [[NSArray arrayWithObjects:@"a b", @"ä B", @"ccc", nil]
                  filteredArrayUsingPredicate: predicate];
NSLog(@"result: %@", array);

Вывод:

Running…
2010-02-04 20:05:41.770 predicate2[74163:a0f] result: (
    "a b",
    "\U00e4 b"
)

Может быть, ваша строка поиска не то, что вы думаете ...

...