私は経験の浅い Cocoa プログラマーであり、私の質問がドキュメントで何らかの形で回答されていて、単にそれを見逃していた場合、または NSPredicateEditor の動作について理解していないことがあった場合は、お詫び申し上げます。ただし、ドキュメントを検索してグーグルで検索しようとしましたが、ほとんど効果がありませんでした。したがって、私はあなたに質問をします。
NSPredicateEditor を使用して Core Data ベースのテーブル ビューをフィルタリングしようとしています。フィルタリングは、NSCompoundPredicate を作成することにより、さまざまな基準に基づいて行をフィルタリングするという点でうまく機能します。ただし、述語エディターの行の検索フィールドにテキストがない場合、返される NSPredicate は次のようなものになります。
dataName CONTAINS[cd] ""
...これは Core Data レコードのどれとも一致しません - 私が望むものではありません。その行の検索フィールドが空白の場合、基本的に、データ セットをフィルター処理したくありません。
私の質問は、述語のこれらの部分を無視するための最も簡単で最良の解決策は何ですか? 私の最初のアイデアは、 NSPredicateEditor の値を行ごとに解析し(NSPredicate *)predicateForRow:(NSInteger)row
、述語を自分で再構築して、一致しようとしている行を無視すること""
でしたが、それは不必要に面倒に思えます。最終的な NSCompoundPredicate を分解し- (NSArray *)subpredicates
てそのように編集することも、おそらく私のやり方が間違っているように思えます。これを行うよりエレガントな方法はありますか?
*明確にするために、現在NSPredicateEditorに保存されている最初の述語を実際に編集するのではなく、テーブルビューのコントローラーに渡す述語のコピーを編集することを考えています。