无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站虚位以待
虚位以待广告联系 QQ:184822951 微信:wuyouceoidc大全★服务器租用★香港/5M/450元
查看: 3933|回复: 3

NSPredicate用法总结 swift

[复制链接]
发表于 2015-1-9 12:49:51 | 显示全部楼层 |阅读模式
简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。
定义(最常用到的方法):

let ca = NSPredicate(format: <#String#>, <#args: CVarArgType#>...)

Format:
(1)比较运算符>,<,==,>=,<=,!=
可用于数值及字符串
例:@"number > 100"


(2)范围运算符:IN、BETWEEN
例:"number BETWEEN {1,5}"
      "address IN {'shanghai','beijing'}"


(3)字符串本身:SELF
例:"SELF == 'APPLE'"


(4)字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
例:"name CONTAINS[cd] 'ang'"   //包含某个字符串
       "name BEGINSWITH[c] 'sh'"     //以某个字符串开头
       "name ENDSWITH[d] 'ang'"      //以某个字符串结束
        注:[c]不区分大小写[d]不区分发音符号即没有重音符号[cd]既不区分大小写,也不区分发音符号。

(5)通配符:LIKE
例:"name LIKE[cd] '*er*'"    //*代表通配符,Like也接受[cd].
       "name LIKE[cd] '???er*'"

(6)正则表达式:MATCHES
例:let regex = "^A.+e$";   //以A开头,e结尾
      "name MATCHES %@",regex

实际应用:
(1)对NSArray进行过滤

  1. let array:NSArray = ["beijing","shanghai","guangzou","wuhan"]
  2. let str = "ang"
  3. let pred = NSPredicate(format: "SELF CONTAINS %@", str)
  4. println(array.filteredArrayUsingPredicate(pred!))
复制代码


(2)判断字符串首字母是否为字母:
  1. let regex = "^[A-Za-z].+"
  2. let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
  3. let aString = "3a6454354"

  4. if predicate!.evaluateWithObject(aString) {
  5.     println("是以字母开头")
  6. }
复制代码


(3)字符串替换:

  1. let regex = try! NSRegularExpression(pattern: "(encoding=")[^"]+(")", options: NSRegularExpressionOptions.CaseInsensitive)

  2. let sample = "<xml encoding="abc"></xml><xml encoding="def"></xml><xml encoding="ttt"></xml>"
  3. print("Start" + sample)

  4. let result = regex.stringByReplacingMatchesInString(sample, options:NSMatchingOptions(rawValue: 0), range: NSMakeRange(0,sample.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)), withTemplate: "$1utf-8$2")
  5. print(result)
复制代码
发表于 2015-5-8 06:42:28 | 显示全部楼层
非常之好!!
回复

使用道具 举报

发表于 2016-4-14 13:21:18 | 显示全部楼层
顶你!辛苦了~
回复

使用道具 举报

发表于 2016-6-23 11:39:21 | 显示全部楼层

顶你!辛苦了~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2020-1-21 00:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表