【发布时间】:2010-10-23 08:42:36
【问题描述】:
我有一个 NSTableView,其中包含一些填充了数据的列。如何设置可以根据特定列的内容过滤行的搜索栏?我正在寻找使用 Finder 中的 Spotlight 或 iTunes 中的搜索栏可以按元数据过滤歌曲的类型。
【问题讨论】:
标签: objective-c cocoa macos search spotlight
我有一个 NSTableView,其中包含一些填充了数据的列。如何设置可以根据特定列的内容过滤行的搜索栏?我正在寻找使用 Finder 中的 Spotlight 或 iTunes 中的搜索栏可以按元数据过滤歌曲的类型。
【问题讨论】:
标签: objective-c cocoa macos search spotlight
“Spotlight”功能实际上是通过 SearchKit API 提供给您的,尽管对于您所描述的简单情况 NSPredicate 可能是更好的选择。如果有人感兴趣,我为 CocoaHeads 写了一个 SearchKit 演示文稿,你可以take a look at here。
【讨论】:
你的数据源可以由 NSArrayController 管理吗?
有 2 个standard 方法。第一种(Tiger 之前的)技术是继承 NSArrayController 的子类,覆盖排列对象。第二个(后Tiger)是将NSSearchField 的谓词绑定到NSArrayController 的filterPredicate。在任何一种情况下,将视图属性绑定到控制器的 arrangedObject 键(例如,将“名称”NSTableColumn 绑定到控制器的 arrangedObjects.name 键并将 NSTableView 的内容绑定到 arrangedObjects)。您可能想阅读writing predicates。
【讨论】: