Swift-谓词(NSPredicate)

作者: FlyElephant | 来源:发表于2017-05-08 07:59 被阅读225次

    NSPredicate定义逻辑条件限制数据搜索和内存中数据过滤.NSPredicate和运算符组合时谓词表达式返回一个Bool值来评估是否满足过滤条件.

    比较运算符

    =、==:判断两个表达式是否相等,在谓词中=和==表示判断,可以设置不同的数据类型:
    <pre><code>` let name:String = "FlyElephant"
    let predicate:NSPredicate = NSPredicate(format: " SELF = %@ ", "FlyElephant")

        if predicate.evaluate(with: name) {
            print("name--\(name)过滤成功")
        }
        
        
        let number:Int = 27
        let numPredicate:NSPredicate = NSPredicate(format: " SELF =  %d ", 27)
        
        if numPredicate.evaluate(with: number) {
            print("Number--\(number)过滤成功")
        }`</code></pre>
    

    其他的基本比较运算符>=,=>,<=,=<,>,<,!=、<>.
    BETWEEN:表达式的形式 {下限,上限}的格式,要求该表达式必须大于或等于下限,并小于或等于上限
    <pre><code>` let data:Int = 5
    let rangePredicate:NSPredicate = NSPredicate(format: " SELF BETWEEN {1,10}")

        if rangePredicate.evaluate(with: data) {
            print("范围--\(data)过滤成功")
        }`</code></pre>
    

    逻辑运算符

    逻辑与(AND、&&),逻辑或(.OR、||),逻辑非(NOT、 !),基本的数据逻辑操作.
    <pre><code>let data:Int = 8 let dataPredicate:NSPredicate = NSPredicate(format: " SELF > 5 && SELF < 10") if dataPredicate.evaluate(with: data) { print("逻辑---\(data)过滤成功") }</code></pre>

    字符串比较运算符

    BEGINSWITH 表示字符串是否以指定的字符串开头,ENDSWITH以特定的字符串结尾,CONTAINS包含指定的字符串,LIKE字符串符合匹配模式,MATCHES字符串符合特定的正则表达式.
    <pre><code>let regex:String = "^[0-9]+$" let matchPredicate:NSPredicate = NSPredicate(format: "SELF MATCHES %@", regex) let data:String = "123456789" if matchPredicate.evaluate(with: data) { print("FlyElephant---字符串---\(data)符合---\(regex)") }</code></pre>

    集合运算符

    ANY、SOME集合中任意一个元素满足条件,ALL集合中所有元素都满足条件,NONE集合中没有任何元素满足条件,IN等价于SQL语句中的IN运算符,元素在数组之中.

    <pre><code>` let inData:String = "Keso"
    let inPredicate:NSPredicate = NSPredicate(format: " SELF IN {'FlyElephant','Keso'}")

        if inPredicate.evaluate(with: inData) {
            print("范围--\(inData)过滤成功")
        }`</code></pre>
    

    动态性

    NSPredicate的赋值,可以动态的通过字典来设置,$VALUE表示需要设置的值,$K表示动态设置属性.
    <pre><code>let name:String = "FlyElephant" var predicate:NSPredicate = NSPredicate(format: " SELF = $VALUE ") predicate = predicate.withSubstitutionVariables(["VALUE":name]) if predicate.evaluate(with: name) { print("name--\(name)过滤成功") }</code></pre>

    FlyElephant.png

    相关文章

      网友评论

        本文标题:Swift-谓词(NSPredicate)

        本文链接:https://www.haomeiwen.com/subject/uncptxtx.html