NSPredicate, пробелы в CoreData.Как урезать в предикате? - PullRequest
1 голос
/ 12 октября 2011

У меня есть приложение CoreData / SQLite, в котором у меня есть «Родительские категории» и «Категории».У меня нет контроля над данными, некоторые значения «Родительские категории» имеют конечные пробелы.

Я мог бы использовать CONTAINS (или я должен сказать, что он работает с CONTAINS, но это то, что яне можете использовать).Например, у меня есть 2 записи, мужчины и мужчины.Если я использую CONTAINS, я верну обе записи, и вы увидите, как это может быть проблемой.

Я могу легко урезать свою сторону, но предикат будет сравнивать это с базой данных и не будет совпадать.Поэтому мой вопрос заключается в том, как я могу учесть пробелы в предикате, если это вообще возможно.

У меня есть категория "MENS", которую кто-то выбрал в приложении, и она сравнивается с "MENS" вбазы данных.

1 Ответ

1 голос
/ 24 октября 2011

Я бы обрезал данные перед выполнением поиска. Вы можете сделать это легко, используя stringByTrimmingCharactersInSet. Делая это заранее, вы также избежите снижения производительности. Это может быть дорого, если вы проводите сравнение на основе символов с CONTAINS.

Итак, предположим, что ваша строка поиска "MEN".

Вот способ убрать любых хитрых персонажей:

NSString *trimmed = [@"MEN  " stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

Есть также whitespaceAndNewlineCharacterSet, который делает то, что говорит на банке.

Кроме того, можно легко создать свой собственный персонаж из материала, который вы хотите обрезать.

Для этого взгляните на:

Описание класса NSCharacterSet

и

Apple Руководство по программированию строки

...