Contents

PredicateExpression

A component expression that makes up part of a predicate.

Declaration

protocol PredicateExpression<Output>

Overview

To transform a predicate, define a protocol for the result and add conformance on each predicate expression type that you support. For example:

protocol ProsePredicateExpression {
    func proseQuery() -> String
}

// Repeated for each supported operator.
extension PredicateExpressions.Equal: ProsePredicateExpression 
        where LHS: ProsePredicateExpression,
        RHS: ProsePredicateExpression {
    func proseQuery() -> String {
        return lhs.proseQuery() + " is equal to " + rhs.proseQuery()
    }
}

extension Predicate  {
    func proseQuery() -> String? {
        guard let expression = expression as? ProsePredicateExpression else { return nil }
        return expression.proseQuery()
    }
}

Topics

Evaluating a predicate expression

See Also

Filltering