NSPredicate

iOS中的谓词(NSPredicate)使用

看了这遍文章,对照着写了以下Demo。一般性的使用基本够了。

//: Playground - noun: a place where people can play

import UIKit
import Foundation


//1.比较运算符
func demoComparationOperator()
{
    {
        let testNum = 123
        let predict = NSPredicate(format: "self == 123")
        predict.evaluate(with: testNum)
    }();
    
    {
        let testNum = 123
        let predict = NSPredicate(format: "self < 123")
        predict.evaluate(with: testNum)
    }();
    
    {
        let testNum = 122
        let predict = NSPredicate(format: "self != 123")
        predict.evaluate(with: testNum)
    }();
    
    
    {
        let testNum = 123
        let predict = NSPredicate(format: "self BETWEEN {100,200}")
        predict.evaluate(with: testNum)
    }();
    
    {
        let testNum = "HELLO"
        let predict = NSPredicate(format: "self == \"HELLO\"")
        predict.evaluate(with: testNum)
    }();
    
    {
        let testNum = "HELLO"
        let predict = NSPredicate(format: "self <= \"HELLO WORLD\"")
        predict.evaluate(with: testNum)
    }();
}


func demoLogic()
{
    {
        let testArray = [1,2,3,4,5,6,7]
        let predict = NSPredicate(format: "self > 2 && self <= 5")
        (testArray as NSArray).filtered(using: predict)
    }();
    
    {
        let testArray = [1,2,3,4,5,6,7]
        let predict = NSPredicate(format: "self <= 2 or self >= 5")
        (testArray as NSArray).filtered(using: predict)
    }();
    
    {
        let testArray = [1,2,3,4,5,6,7]
        let predict = NSPredicate(format: "!(self >= 2)")
        (testArray as NSArray).filtered(using: predict)
    }();
}


func demoString()
{
    {
        let testString = "hello world"
        let predict = NSPredicate(format: "self beginswith \"hello\"")
        predict.evaluate(with: testString)
    
    }();
    
    {
        let testString = "hello world"
        let predict = NSPredicate(format: "self endswith \"world\"")
        predict.evaluate(with: testString)
    }();
    
    {
        let testString = "hello world"
        let predict = NSPredicate(format: "self contains \"hello\"")
        predict.evaluate(with: testString)
    }();
    
    {
        let testString = "HELLO world"
        let predict = NSPredicate(format: "self contains[CD] \"hello\"")
        predict.evaluate(with: testString)
    }();
    
    {
        let testString = "HELLO world"
        let predict = NSPredicate(format: "self LIKE[CD] \"?ello*\"")
        predict.evaluate(with: testString)
    }();
    
    {
        let testString = "666666"
        let predict = NSPredicate(format: "self matches \"[1-9]{6}\"")
        predict.evaluate(with: testString)
    }();
    
}

func demoSetOperation()
{
    {
        let filterArray : NSArray = ["ab","abc"]
        let array : NSArray = ["a","ab","abc","abcd"]
        let predict = NSPredicate(format: "not (self in %@)", filterArray)
        array.filtered(using: predict)
    }();
    
    {
        let filterArray : NSArray = ["ab","abc"]
        let array : NSArray = ["ab","ab","abc","abc","abcd"]
        let predict = NSPredicate(format: "all self in %@", filterArray)
        predict.evaluate(with: array)
    }();
    
    {
        let filterArray : NSArray = ["ab","abc"]
        let array : NSArray = ["abdd","abdd","abcdd","abcdd","abcdd","ab"]
        let predict = NSPredicate(format: "none self in %@", filterArray)
        predict.evaluate(with: array)
    }();
    
    {
        let filterArray : NSArray = ["ab","abc"]
        let array : NSArray = ["abdd","abdd","abcdd","abcdd","abcdd","ab"]
        let predict = NSPredicate(format: "any self in %@", filterArray)
        predict.evaluate(with: array)
    }();
    
    {
        let testDic : NSArray = [["age":18],["age":19],["age":20],["age":21]]
        let predict = NSPredicate(format: "any self.age < 19 && array[SIZE] == 4")
        predict.evaluate(with: testDic)
    }();
    
    {
        let testArray : NSArray = [["age":18],["age":19],["age":20],["age":21]]
        let predict = NSPredicate(format: "self.age <= 19")
        testArray.filtered(using: predict)
    }();
}


demoComparationOperator()
demoLogic()
demoString()
demoSetOperation()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自: http://www.cocoachina.com/ios/20160111/14926.html 首先...
    赵yx阅读 3,555评论 0 0
  • 转载自:http://www.cocoachina.com/ios/20160111/14926.html 1、大...
    一笔春秋阅读 7,831评论 0 2
  • 开发中经常需要从集合中查找到某个或某些值,或者通过过滤得到想要的内容,这都是家常便饭的事儿。所以,我们常见的就是需...
    秋月夜阅读 9,308评论 1 9
  • NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。它的查询语言就像SQL的WHE...
    Dean麦兜阅读 2,880评论 0 2
  • 21天疯狂线条挑战结束啦!(其实明天才是第21天,不过就剩最后两个图样了嘛,就一口气全画了~) 因为我是半道加入的...
    SugarLYS阅读 3,060评论 0 3