NSPredicate in Realm - поиск любого элемента из массива в результатах - PullRequest
0 голосов
/ 29 июня 2018

У меня есть база данных Realm со списком мест, в каждом из которых есть список placeTypes. Я хотел бы иметь возможность использовать запрос предиката, например -

let searchKey = "hotel"
let predicate = NSPredicate(format: "%@ IN placeTypes", searchKey)

, но это не работает, когда я хочу сопоставить несколько ключей поиска. Мое решение до сих пор состоит в том, чтобы использовать NSCompoundPredicate -

let searchKeys = ["hotel", "cafe", "bar"]
let predicates: [NSPredicate] = searchKeys.map { NSPredicate(format: "%@ IN placeTypes", $0) }
let compoundPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates)

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

Если у кого-нибудь есть идеи, как это можно сделать, я был бы признателен - ни в одном поиске по SO подобный вопрос не найден.

1 Ответ

0 голосов
/ 29 июня 2018

Возможно, было бы эффективнее разбить элементы по категориям, таким как отели, рестораны и т. Д., Таким образом, вы будете искать только в соответствующих категориях

...