所以我有一个 NSSearchField 通过绑定直接连接到一个 NSArrayController,附加到 filterPredicate,因此无需任何代码,用户只需输入 NSSearchField 并过滤在界面中呈现给他的 NSArrayController 中的对象列表(具体来说是一个 NSCollectionView)。
连接 NSSearchField 以提供实时搜索,因此 NSCollectionView 在用户输入时立即被过滤,而不是在等待用户停止输入的短时间内。
但是,问题在于这使得界面非常滞后。键入显着延迟了 0.5-1 秒,看起来 NSCollectionView 正在尝试为用户输入的搜索字符串的每个部分的项目的每一次重新排列设置动画。
我想要的是实时搜索,但搜索字段中的输入是流畅的,并且结果要尽可能快地过滤。有没有办法通过绑定来做到这一点,或者我需要在一个单独的线程上放入一些触发 filterPredicate 的自定义代码?
(请注意,我在 NSArrayController 上设置了自定义排序算法,删除它似乎有助于解决滞后问题,但并非完全如此。)