2015-10-13 1 views
1

У меня есть запрос облачного набора, который использует NSPredicate ниже для поиска записей, где имя начинается со значения, которое пользователь вводит в UITextField. Я хотел бы сделать регистр поиска нечувствительным, поэтому, если бы пользователь искал «яблоко», он отобразил результаты для «Apple» и «apple». Как я могу это сделать? Я также попытался изменить запрос на CONTAINS вместо BEGINSWITH, но приложение не возвращает никаких результатов, поскольку оно ищет значение в массиве. Можно ли увидеть, содержит ли строка строку текстового поля? БлагодаряCloudKit NSPredicate case insensitive

var p = NSPredicate(format: "name BEGINSWITH %@", titleLabel.text!) 
+1

'BEGINSWITH [c]'? «Сравнение строк по умолчанию чувствительно к регистру и диакритике. Вы можете модифицировать оператора, используя ключевые символы c и d в квадратных скобках, чтобы указать регистр и диакритическую нечувствительность соответственно, например firstName BEGINSWITH [cd] $ FIRST_NAME». от https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-SW1 (раздел сравнения строк) – Larme

+0

Является ли '$ FIRST_NAME', где я должен разместить 'titleLabel.text!'? –

+0

'' name BEGINSWITH [c]% @ "' то, что вы должны делать. – Larme

ответ

0

согласно CKQuerydocs:

Для полей, содержащих строковые значения, вы можете соответствовать начало часть строки с помощью оператора BEGINSWITH, как показано в листинге 4. Вы не могут использовать другие операторы сравнения строк, такие как CONTAINS или ENDSWITH. При использовании этого оператора поле должно содержать строковое значение и должно начинаться с указанной вами строки. Матчи чувствительны к регистру. В примерах предикат соответствует записям , чье поле любимых цветов содержало строки красного, красноватого или красного ленты зеленого канала.

+0

Правильно, что BEGINSWITH чувствителен к регистру. Однако вы можете использовать запрос на self с NSPredicate (формат: «self contains% @», NSString (string: name)) Тогда он не чувствителен к регистру. Убедитесь, что вы пометили его для запроса и т. Д. На панели управления. – bnassler