iOS 谓词(NSPredicate)

文档定义

NSPredicate:A definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.(逻辑条件的定义,用于限制对访存或内存中过滤的搜索。)

谓词代表逻辑条件,可用于过滤对象集合。 虽然直接从NSComparisonPredicate,NSCompoundPredicate和NSExpression的实例创建谓词是很常见的,但是您通常会根据由NSPredicate上的类方法解析的格式字符串来创建谓词。 谓词格式字符串的示例包括:
1. 简单比较,例如成绩==“ 7”或“ Shaffiq”这样的名字
2. 大小写不敏感的查找,例如名称contains [cd]“ itroen”
3. 逻辑运算,例如(名字,例如“ Mark”)或(姓氏,例如“ Adderley”)
4. 时间范围限制,例如{$ YESTERDAY,$ TOMORROW}之间的日期。
5. 关系条件,例如group.name之类的“ work *”
6. 聚合操作,例如@ sum.items.price <1000
有关完整的语法参考,请参阅《谓词编程指南》

谓词的创建

谓词字符串解析器对空格不敏感,对关键字不区分大小写,并且支持嵌套的括号表达式。 它还支持printf样式的格式说明符(例如%x和%@)-请参阅格式化字符串对象。 变量用 表 示 ( 例 如 表示(例如 VARIABLE_NAME)-有关更多详细信息,请参见使用谓词模板创建谓词。
predicateFormat 后面的字符串如何设置可以查看 谓词格式字符串语法

解析器不执行任何语义类型检查。 它会尽力而为地创建合适的表达式,但是(尤其是在替换变量的情况下)可能会生成运行时错误。(确保format字符串是正确的,否则会运行时崩溃)

//初始化方法
public convenience init(format predicateFormat: String, _ args: CVarArg...)

例子:

//like[c]是不区分大小写
let pre = NSPredicate.init(format: "(lastName like[c] %@) AND (birthday > %@)", "abc",NSNumber.init(value: 10))
let result =  pre.evaluate(with: ["lastName":"abc","birthday":11])
print(result)// true

出来通过固定字符串创建谓词以外,还支持 字符串常量,变量和通配符创建谓词
例子:

let pre = NSPredicate.init(format: 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值