SWIFT 3 OSX Cocoa 阵列 Controller 和 CoreData 绑定(bind) "Search on multiple columns"

标签 swift cocoa nstableview nsarraycontroller nssearchfield

我有一个核心数据实体绑定(bind)到一个有 5 列的 tableView。 我正在使用数组 Controller 来管理 TableView 排序等。

我的问题是使用绑定(bind)进行搜索。我有一个绑定(bind)到 ArrayController 的 searchField,谓词格式设置为第一列数据。一切正常。我还可以在 XCODE 中更改谓词格式并在不同的列上搜索。

我遇到的问题是知道如何更改我的代码中的谓词格式以允许用户在他们选择的列上进行搜索...

我尝试按如下方式修改 ArrayController:

let predicate = NSPredicate(format: "projectNumber contains[cd] %@", searchBar.stringValue)
    searchArrayController.filterPredicate = predicate

let predicate = NSPredicate(format: "customerName contains[cd] %@", searchBar.stringValue)
    searchArrayController.filterPredicate = predicate

projectNumber 和 customerName 是我的实体的属性。

当我以这种方式设置谓词时,表数据消失了。我能够通过搜索字段的摆弄使其再次显示,但它忽略了我的谓词设置并且仅服从 XCODE Storyboard 中的原始设置。

Storyboard设置为: 谓词格式 = projectNumber contains[cd] $value

提前感谢您提供的任何帮助...

最佳答案

为每一列添加谓词绑定(bind)。当您绑定(bind)搜索字段的 predicate 时,会出现绑定(bind) predicate2。无需编码。

关于SWIFT 3 OSX Cocoa 阵列 Controller 和 CoreData 绑定(bind) "Search on multiple columns",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540218/

相关文章:

objective-c - NSTableView 多行类型

ios - Swift 将导航栏标题更改为所选表格 View 单元格的标题

ios - MapKit - 在不占用大量 CPU 的情况下跟踪 map 上的用户位置

objective-c - 我可以为 NSFileHandleReadCompletionNotification 使用较小的缓冲区吗?

Cocoa 绑定(bind)——尝试将 NSMenuItem 的状态绑定(bind)到我的自定义 BOOL

objective-c - 单例创建首选项

iOS - 将图像发送到 Instagram - DocumentInteraction

ios - Swift - 加载外部数据的可变范围

xcode - NSTableView 拖放选定的行会覆盖蓝色的行布局