objective-c – 在数组控制器上使用谓词来过滤相关对象

我有一个使用Core Data和绑定的应用程序.我希望有一个NSSearchField可以搜索绑定到NSTableView的NSArrayController.阵列控制器包含具有“名称”字段的Core Data对象.我已经像这样设置了NSSearchField:

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

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

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

然而,这不起作用.当文本输入NSSearchField时,NSTableView中没有任何事情发生.这有什么问题?

最佳答案
在模型键路径尝试将搜索字段谓词绑定到键路径arrayController.filterPredicate.tags时绑定到标记.由于数组控制器的filterPredicate属性没有tags属性,因此您可能会获得以无提示方式记录的“未找到密钥”异常.相反,回想一下NSArrayController的filterPredicate应用于数组的成员,您希望绑定设置如下:

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

self.tags可以写成只是标签,但我认为这更清楚了标签是谓词所应用的对象的属性.

转载注明原文:objective-c – 在数组控制器上使用谓词来过滤相关对象 - 代码日志