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()
}
}