您的位置:首页 > 移动开发 > IOS开发

谓词大揭秘

2015-11-21 22:04 375 查看
谓词由NSPredicate对象来代表,它有三个子类:NSComarisonPredicate,NSCompoundPredicate和NSExpression,虽然程序实际创建的通常是NSPredicate的子类的实例,但实际编程时会直接使用NSPredicate的predicateWithFormat:方法,以一个谓词字符串为参数来创建NSPredicate对象。例子如下:

group.name like "work"
ALL children.age > 12
ANY children.age > 12


创建谓词之后,如果谓词中没有占位符参数,即可使用NSPredicate的evaluteWithObject:方法计算谓词的结果,该结果总是一个BOOL值;如果该谓词中有占位符参数,则需要经过如下两步来计算谓词的结果。

1,调用谓词的predicateWithSubstitutionVariables:方法为占位符参数设置参数值。

2,执行谓词的evaluateWithObject:方法计算谓词的返回结果。

提示:

NSPredicate 还提供了一个evaluteWithObject:substitutionVariables:方法,该方法可以同时完成上面两步。该方法既为谓词重点占位符参数设置了参数值,也计算了谓词的返回结果。

在谓词中使用占位符参数

如果需要在谓词表达式中使用变量,则可以考虑在谓词表达式中使用占位符参数,谓词表达式中支持以下两个占位符参数。

1)%K:该占位符用于动态传入属性名。

2)%@:该占位符用于动态设置属性值。

如果在此表达式中使用了占位符参数,则需要在调用predicateWthFormatL方法时为个占位符传入参数值。

除此之外,还可以在谓词表达式中使用动态改变的属性值,类似于环境变量,如下:

[NSPredicate predicateWithFormat:@"name CONTAINS $SUBSTR"];


上面表达式
$SUBSTR
是一个可以动态变化的值,随着程序改变了
$SUBSTR
的值,该谓词表达式的比较条件就可以动态的改变。

谓词表达式语法





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IOS 谓词