NSPredicate

iOS中的謂詞(NSPredicate)使用

看了這遍文章,對照著寫了以下Demo。一般性的使用基本夠了。

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

import UIKit
import Foundation


//1.比較運(yùn)算符
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()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自: http://www.cocoachina.com/ios/20160111/14926.html 首先...
    趙yx閱讀 570評論 0 0
  • 轉(zhuǎn)載自:http://www.cocoachina.com/ios/20160111/14926.html 1、大...
    一筆春秋閱讀 2,870評論 0 2
  • 開發(fā)中經(jīng)常需要從集合中查找到某個(gè)或某些值,或者通過過濾得到想要的內(nèi)容,這都是家常便飯的事兒。所以,我們常見的就是需...
    秋月夜閱讀 3,941評論 1 9
  • NSPredicate是一個(gè)Foundation類,它指定數(shù)據(jù)被獲取或者過濾的方式。它的查詢語言就像SQL的WHE...
    Dean麥兜閱讀 382評論 0 2
  • 21天瘋狂線條挑戰(zhàn)結(jié)束啦?。ㄆ鋵?shí)明天才是第21天,不過就剩最后兩個(gè)圖樣了嘛,就一口氣全畫了~) 因?yàn)槲沂前氲兰尤氲?..
    SugarLYS閱讀 402評論 0 3