そのため、filterPredicate にアタッチされたバインディングを介して NSArrayController に直接接続された NSSearchField を取得しました。これにより、ユーザーはコードなしで NSSearchField を入力し、インターフェースで提示された NSArrayController 内のオブジェクトのリストをフィルタリングすることができます。 (具体的には NSCollectionView)。
NSSearchField はライブ検索を提供するために接続されているため、NSCollectionView は、ユーザーが入力を停止するのを少し待った後ではなく、ユーザーが入力するとすぐにフィルター処理されます。
ただし、問題は、これによりインターフェイスが非常に遅くなることです。入力は 0.5 ~ 1 秒と大幅に遅れ、ユーザーが入力する検索文字列の各部分について、NSCollectionView がアイテムの再配置をすべてアニメーション化しようとしているように見えます。
私が望むのは、検索がライブであることですが、検索フィールドへの入力は流動的であり、結果はできるだけ速くフィルタリングされることです。バインディングを介してこれを行う方法はありますか、または別のスレッドで filterPredicate をトリガーするカスタム コードを挿入する必要がありますか?
(NSArrayController にカスタムの並べ替えアルゴリズムを設定していることに注意してください。それを削除すると、遅延が少し解消されるようですが、完全ではありません。)