使用 Realm Swift 进行变音符号不敏感过滤

Diacritic-insensitive filtering with Realm Swift

我有一个应用程序,我想知道如果我尝试根据名称查找街道,例如 "ceska",我的应用程序是否可以匹配名称包含变音符号的街道,例如“捷克”。

我试过使用:

let predicate = NSPredicate(format: "name contains[c] %@", searchText)

当使用 name contains[d] 时它不起作用。

小写字母有三种搜索变体č。有没有变音符号的小写变体 c、大写变体 Č 和没有变音符号的大写变体 C.

contains 中的选项 d 控制变音符号。 contains 中的选项 c 控制区分大小写。

如果您正在寻找文本 ceska 那么:

  • contains 只会找到 ceska(完全匹配)
  • contains[c] 会找到 ceskaCeska
  • contains[d] 会找到 ceskačeska
  • contains[cd] 会找到 ceskačeskaCeskaČeska

Realm Swift v2.5.0 开始支持不区分变音符号的修饰符。