Я реализую функцию поиска в своем приложении. Я хотел бы, чтобы пользователь искал слово одновременно в нескольких атрибутах данного объекта.
Вот пример сущности с 3 строковыми атрибутами: Person (firstName, lastName, примечания)
Давайте используем фиктивный набор данных с 3 людьми:
- «Эмили», «Мосты», «Она очень скоро будет в городе».
- «Джонни», «Уильямс», «Этот чувак действительно крут».
- «Уилл», «Смит», «Он ничего не помнит почему-то».
Теперь давайте предположим, что пользователь ищет вхождение "will" и что мы запускаем поиск без учета регистра. Все три ранее описанных человека будут соответствовать слову «будет» благодаря использованию orPredicateWithSubpredicates.
В идеале я хотел бы, чтобы результаты отображались в следующем порядке для целей релевантности:
- «Уилл», «Смит», «Он ничего не помнит почему-то».
- «Джонни», «Уильямс», «Этот чувак действительно крут».
- «Эмили», «Мосты», «Она очень скоро будет в городе».
Для этой функции поиска «имя» более релевантно, чем «фамилия», которые оба более релевантны, чем атрибут «примечания».
Поскольку я использую UISearchDisplayController, я также использую NSFetchedResultsController, для которого требуется NSSortDescriptor. Проблема для меня сейчас в том, какой атрибут/ключ я собираюсь использовать для инициализации NSSortDescriptor?
Я уже прочитал много сообщений и подумал, что временное свойство может помочь мне с этой проблемой, но я не могу понять, как/когда настроить это переходное свойство, которое можно было бы назвать чем-то вроде «sortKey» и установить для этих ценности:
- 1: Для совпадения по "firstName"
- 2: Для совпадения по «фамилии»
- 3: Для совпадения по «нотам»
В конце концов, я думаю, я мог бы попытаться запустить три разных запроса, но тогда мне пришлось бы отказаться от использования NSFetchedResultsController и всей его магии...
Я не знаю, достигаю ли я пределов NSFetchedResultsController или что-то в этом роде, но любой указатель был бы великолепен, спасибо!
Джосс.