我正在编写一个通过内容提供者调用与联系人本机数据库集成的应用程序。在我的应用中,没有数据库,因为我们直接从内容提供者那里获取。要求之一是进行类似于android Contacts应用程序的搜索,如果我输入搜索词“ Brian”(可以是任何单词),它可能会返回“ Brian”和“Brián”。
现在我正在使用ContactsContract.Data.CONTENT_URI来搜索电子邮件和电话,因为如果对每个这些模仿类型都使用CONTENT_FILTER_URI,则搜索过滤不受控制。我正在使用类似'%$ filterString%'的方法,并尝试将COLLATE LOCALIZED添加到where子句中,但这似乎无济于事。我只能看到3个开箱即用的COLLATE函数(BINARY,LOCALIZED和NOCASE),但我认为这些函数无法满足我的需要。我也找不到任何正则表达式,但是如果有人知道的话,那会很好。
大多数帖子都谈论添加一列,但是在我创建自己的本地数据库之前,我想知道是否有人对本地内容提供商拥有成功的方法。奇怪的是,IOS似乎支持允许不区分重音的谓词,而且我很惊讶,除非您拥有自己的数据库,否则不区分重音的搜索是不可行的。