Я пытаюсь найти записи CloudKit, содержащие текст поиска, введенный моими пользователями.Как найти частичное слово в записи CloudKit?
У меня есть записи с этими названиями (в формате String):
- Пункт 1
- Пункт 2
- Пункт 3
- Тест 1
- Тест 2
Я попытался использовать 'contains':
let predicate = NSPredicate(format: "self contains %@", searchText)
let query = CKQuery(recordType: "ShareableItem", predicate: predicate)
publicDatabase.perform(query, inZoneWith: nil) { results, error in
...
Но это только возвращает результаты, которые я ищу, если я использую полное слово в качестве поискового запроса.
EG. Если я ищу «Item», я возвращаю пункты 1, 2 и 3, но если я ищу «tem», я не получаю никаких результатов.
Есть ли способ включить подстановочный знак в поиске или другой способ использования частичного текста поиска?
Я также попытался:
NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", searchText)
, но с тем же результатом
Выглядит по-моему. Вы проверили 'searchText' для любых ведущих или конечных пробелов? Во-вторых, вы можете изменить имя столбца на «self», которое может столкнуться с зарезервированным словом Swift. И третья вещь, которую вы, возможно, захотите попробовать, - использовать синтаксис «let predicate = NSPredicate (формат:«% K like *% @ * »,« >> ваше имя столбца << », searchText.trimmingCharacters (в: .whitespacesAndNewlines)) ' – jboi
Yep проверяется на наличие пробелов. «Я» - это не имя столбца, это ключевой путь, часть [Спецификация CKQuery] (https://developer.apple.com/reference/cloudkit/ckquery). «Путь к самому ключу заставляет сервер искать в поиске строковые поля для указанной строки токена. Например, предикатная строка @ "self contains 'blue'" ищет слово «синий» во всех полях, помеченных для включения в полнотекстовые поиски ». К сожалению, подобное не поддерживается в среде CloudKit. – Derek