Ios 使用NSPredicate搜索带有通配符的子字符串

Ios 使用NSPredicate搜索带有通配符的子字符串,ios,swift,wildcard,nspredicate,Ios,Swift,Wildcard,Nspredicate,我尝试查找包含带有通配符的子字符串的字符串,例如字符串应该包含“*”和“p”。同时,字符串可以开始、结束并在符号之间包含任意数量的字符。这就是我的例子 let dataSource = [ "Domain CheckService", "IMEI check", "Compliant about service provider", "Compliant about TRA", "Enquires", "Suggestion", "SMS*

我尝试查找包含带有通配符的子字符串的字符串,例如字符串应该包含“*”和“p”。同时,字符串可以开始、结束并在符号之间包含任意数量的字符。这就是我的例子

let dataSource = [
    "Domain CheckService",
    "IMEI check",
    "Compliant about service provider",
    "Compliant about TRA",
    "Enquires",
    "Suggestion",
    "SMS* Spam",
    "Poor Coverage",
    "Pure *Signal",
    "Help Salim"
]

let searchString = "***p*"
let predicate = NSPredicate(format: "SELF LIKE %@", searchString)
let searchDataSource = dataSource.filter { predicate.evaluate(with: $0) }
我使用该掩码查找满足条件的字符串:

any symbols + '*' + any symbols + 'p' + any symbols

但这个变体不能根据湖中的保留符号*工作,所以结果我得到了错误的搜索集。所以这是个问题?如何搜索包含“*”符号的子字符串。

导致正确结果的变体:使用通配符的方式与正则表达式中的转义符号相同,在通配符之前添加双反斜杠 正确的掩码如下所示:

 let searchString = "*\\**p*"