Predicate Programming Guide

Posted zzfx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Predicate Programming Guide相关的知识,希望对你有一定的参考价值。

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/AdditionalChapters/Introduction.html#//apple_ref/doc/uid/TP40001789

Predicates provide a general means of specifying queries in Cocoa. The predicate system is capable of handling a large number of domains, including Core Data and Spotlight. This document describes predicates in general, their use, their syntax, and their limitations.

At a Glance

In Cocoa, a predicate is a logical statement that evaluates to a Boolean value (true or false). There are two types of predicate, known as comparison and compound:

  • comparison predicate compares two expressions using an operator. The expressions are referred to as the left hand side and the right hand side of the predicate (with the operator in the middle). A comparison predicate returns the result of invoking the operator with the results of evaluating the expressions.

  • compound predicate compares the results of evaluating two or more other predicates, or negates another predicate.

Cocoa supports a wide range of types of predicate, including the following:

  • Simple comparisons, such as grade == 7 or firstName like ‘Mark‘

  • Case or diacritic insensitive lookups, such as name contains[cd] ‘citroen‘

  • Logical operations, such as (firstName beginswith ‘M‘) AND (lastName like ‘Adderley‘)

You can also create predicates for relationships—such as group.name matches ‘work.*‘ALL children.age > 12, and ANY children.age > 12—and for operations such as @sum.items.price < 1000

Cocoa predicates provide a means of encoding queries in a manner that is independent of the store used to hold the data being searched. You use predicates to represent logical conditions used for constraining the set of objects retrieved by Spotlight and Core Data, and for in-memory filtering of objects.

You can use predicates with any class of object, but a class must be key-value coding compliant for the keys you want to use in a predicate.

 

以上是关于Predicate Programming Guide的主要内容,如果未能解决你的问题,请参考以下文章

为啥 LINQ 中的 LastOrDefault(predicate) 比 FirstOrDefault(predicate) 快

如何使用Predicate以及如何自定定义Predicate委托

JDK中Predicate接口源码解析和使用详解

JDK中Predicate接口源码解析和使用详解

Function, Predicate, Supplier

Java 8 - Predicate和Consumer接口函数式编程