在搜索之前过滤 NSArraycontroller 核心数据

Filter NSArraycontroller Core Data before searching

我有一个 NSArrayController 来管理存储在核心数据中并显示在 NSTable 中的联系人。 table 为用户提供了一个搜索字段,可以按姓名查找联系人。一切都在 Swift 中使用 Cocoa 绑定实现并且运行良好。 现在我想在用户键入他的搜索字符串之前添加一个额外的过滤器。过滤器应通过创建日期等附加属性来限制联系人。如何才能做到这一点?通过修改谓词还是我需要继承 NSArrayController?

如有任何帮助,我们将不胜感激。

同时我尝试了 Willeke 提到的方法。最初使用 Interface Builder 为数组控制器设置默认获取谓词,并在每次日期值更改时执行以下代码,效果很好。

 let fetchRequest = ContactArrayController.defaultFetchRequest()
 fetchRequest.predicate = NSPredicate(format: "events.@max.eventDate < %@", lastDate as NSDate)
 try? ContactArrayController.fetch(with: fetchRequest, merge: false)

其中事件是数组控制器中实体的相关实体。

然而,这对我来说似乎是一个开销,因为每次都需要将数据提取到数组控制器中,而不是仅仅应用过滤器

也许有更好的解决方案