5

我有一个使用核心数据和绑定的应用程序。我想要一个 NSSearchField 可以搜索绑定到 NSTableView 的 NSArrayController。数组控制器包含具有“名称”字段的核心数据对象。我已经像这样设置了 NSSearchField:

Bind To: the array controller
Controller Key: filterPredicate
Predicate Format: name contains[c] $value

这行得通。我想扩展它,以便它可以搜索与数组控制器中的对象相关的对象字段。数组控制器中的每个对象都与另一种称为“tag”的对象具有一对多关系,该对象具有一个名为“name”的字段。我尝试了以下方法:

Bind To: the array controller
Controller Key: filterPredicate
Model Key Path: tags
Predicate Format: name contains[c] $value

然而,这不起作用。当文本输入到 NSSearchField 中时,NSTableView 中什么也没有发生。它有什么问题?

4

1 回答 1

10

绑定到tags作为模型键路径尝试将搜索字段谓词绑定到键路径 arrayController.filterPredicate.tags。由于数组控制器的 filterPredicate 属性没有 tags 属性,您可能会收到正在静默记录的“未找到键”异常。相反,回想一下 NSArrayController 的 filterPredicate 应用于数组的成员,您希望绑定设置如下:

Bind To: <array controller>
Controller Key: filterPredicate
Predicate Format: ANY self.tags contains[c] $value

self.tags可以写成 just tags,但我认为这更清楚地表明标签是应用谓词的对象的属性。

于 2009-05-12T20:01:23.250 回答