Я пишу приложение, которое интегрируется с собственной базой данных контактов посредством вызовов контент-провайдера.В моем приложении нет базы данных, поскольку мы вытягиваем прямо из контент-провайдера.Одним из требований является поиск, аналогичный приложению контактов для Android, в котором, если я добавлю поисковый запрос «Брайан» (может быть любым словом), он может вернуть «Брайан» и «Брайан».
Прямо сейчас я использую ContactsContract.Data.CONTENT_URI для поиска в электронных письмах и телефонах, поскольку фильтрация поиска не контролируется, если вы используете CONTENT_FILTER_URI для каждого из этих миметипов.Я использую LIKE "% $ filterString%" и пытался добавить COLLATE LOCALIZED в предложение where, но, похоже, это ничего не дало.Я могу видеть только три встроенные функции COLLATE (BINARY, LOCALIZED и NOCASE), которые, как мне кажется, не работают для того, что мне нужно.Также я не смог найти ни одного регулярного выражения, но было бы хорошо, если бы он был, если кто-нибудь знает.
В большинстве постов говорится о добавлении столбца, но прежде чем приступить к созданию собственной локальной базы данных, мне интересно, есть ли у кого-нибудь успешный подход к нативному контент-провайдеру.Как ни странно, IOS, кажется, поддерживает предикаты, которые позволяют поиск без учета акцента, и я просто нахожу это удивительным, что такая вещь, как поиск без учета акцента, невозможна, если у вас нет собственной базы данных.