<!--
{
  "availability" : [
    "macOS: 10.5.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSPredicateEditor",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSPredicateEditor"
  },
  "title" : "NSPredicateEditor"
}
-->

# NSPredicateEditor

A defined set of rules that allows the editing of predicate objects.

```
class NSPredicateEditor
```

## Overview

`NSPredicateEditor` provides an <doc://com.apple.documentation/documentation/Foundation/NSPredicate> property—[`objectValue`](/documentation/AppKit/NSControl/objectValue) (inherited from [`NSControl`](/documentation/AppKit/NSControl))—that you can get and set directly, and that you can bind using Cocoa bindings (you typically configure a predicate editor in Interface Builder). `NSPredicateEditor` depends on another class, [`NSPredicateEditorRowTemplate`](/documentation/AppKit/NSPredicateEditorRowTemplate), that describes the available predicates and how to display them.

Unlike `NSRuleEditor`, `NSPredicateEditor` does not depend on its delegate to populate its rows (and *does not call the populating delegate methods*). Instead, its rows are populated from its `objectValue` property (an instance of `NSPredicate`). `NSPredicateEditor` relies on instances [`NSPredicateEditorRowTemplate`](/documentation/AppKit/NSPredicateEditorRowTemplate), which are responsible for mapping back and forth between the displayed view values and various predicates.

`NSPredicateEditor` exposes one property, [`rowTemplates`](/documentation/AppKit/NSPredicateEditor/rowTemplates), which is an array of [`NSPredicateEditorRowTemplate`](/documentation/AppKit/NSPredicateEditorRowTemplate) objects.

## Topics

### Managing Row Templates

[`rowTemplates`](/documentation/AppKit/NSPredicateEditor/rowTemplates)

The row templates for the receiver.

[`NSPredicateEditorRowTemplate`](/documentation/AppKit/NSPredicateEditorRowTemplate)

A template that describes available predicates and how to display them.

## Relationships

### Conforms To

[`NSCoding`](/documentation/Foundation/NSCoding)

[`Hashable`](/documentation/Swift/Hashable)

[`NSDraggingDestination`](/documentation/AppKit/NSDraggingDestination)

[`NSStandardKeyBindingResponding`](/documentation/AppKit/NSStandardKeyBindingResponding)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`NSUserActivityRestoring`](/documentation/AppKit/NSUserActivityRestoring)

[`NSTouchBarProvider`](/documentation/AppKit/NSTouchBarProvider)

[`Sendable`](/documentation/Swift/Sendable)

[`NSAnimatablePropertyContainer`](/documentation/AppKit/NSAnimatablePropertyContainer)

[`NSAppearanceCustomization`](/documentation/AppKit/NSAppearanceCustomization)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NSUserInterfaceItemIdentification`](/documentation/AppKit/NSUserInterfaceItemIdentification)

[`CVarArg`](/documentation/Swift/CVarArg)

[`NSAccessibilityProtocol`](/documentation/AppKit/NSAccessibilityProtocol)

[`NSAccessibilityElementProtocol`](/documentation/AppKit/NSAccessibilityElementProtocol)

### Inherits From

[`NSRuleEditor`](/documentation/AppKit/NSRuleEditor)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)