Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何使'NSPredicate'在搜索中忽略某些字符_Swift_Core Data_Nspredicate - Fatal编程技术网

Swift 如何使'NSPredicate'在搜索中忽略某些字符

Swift 如何使'NSPredicate'在搜索中忽略某些字符,swift,core-data,nspredicate,Swift,Core Data,Nspredicate,考试: 我将V«003»文本存储在核心数据id属性中 如果我将003或V003传递给NSPredicate,它将批准搜索,但由于«和»字符,NSFETCHTREQUEST无法找到该字段 如何忽略NSPredicate中的«和»字符 NSPredicate有正则表达式吗?使用正则表达式非常简单,问号表示可选字符 let pattern = "V«?003»?" NSPredicate(format: "id MATCHES %@", pattern) 编辑: 为了修复用户输入,我添加了«?»?在

考试:

我将V«003»文本存储在核心数据id属性中

如果我将003或V003传递给NSPredicate,它将批准搜索,但由于«和»字符,NSFETCHTREQUEST无法找到该字段

如何忽略NSPredicate中的«和»字符


NSPredicate有正则表达式吗?

使用正则表达式非常简单,问号表示可选字符

let pattern = "V«?003»?"
NSPredicate(format: "id MATCHES %@", pattern)
编辑: 为了修复用户输入,我添加了«?»?在每个用户输入字符之间:

func generatePattern(item: String) -> String {
    var str = ""
    for st in item {
        str.append(contentsOf: "«?»?")
        str.append(st)
    }
    str.append(contentsOf: "«?»?")
    return String(str)
}

你可以从这个链接找到答案。搜索前删除不需要的字符@Khushbu,这不是答案。由于NSFetchedResultsController,我无法使用两步筛选。@4kman,我在coredata中存储的数据中有那个坏字符,我不应该因为搜索而更改存储的数据。我只有用户输入的V003个字符,并且V字符不是静态的。不可能生成模式!对吗?如果V不是静态的,但003是静态的,则使用\\w«?003»\\w是一个任意字母数字字符。或者,如果您想将其限制为大写字母,请使用[A-Z]«?003»?因为后端设计不好,我认为最好使用«?003»?在每个角色之间。顺便说一句,谢谢你的新解决方案-